<!DOCTYPE html>
<!-- saved from url=(0055)https://blog.csdn.net/noobzzz/article/details/108686383 -->
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style>.login-box{position: fixed;display: none;left: 50%;top: 50%;z-index: 10000;-webkit-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);-o-transform: translate(-50%, -50%);-moz-transform: translate(-50%, -50%);transform: translate(-50%, -50%);background-color: #fff;}.login-mark{position: fixed;top: 0;left: 0;z-index: 9999;background-color: rgba(0, 0, 0, 0.5);width: 100%;height: 100%;display: none;}</style>
    <link rel="canonical" href="https://blog.csdn.net/noobzzz/article/details/108686383">
    
    <meta name="renderer" content="webkit">
    <meta name="force-rendering" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="report" content="{&quot;pid&quot;: &quot;blog&quot;, &quot;spm&quot;:&quot;1001.2101&quot;}">
    <meta name="referrer" content="always">
    <meta http-equiv="Cache-Control" content="no-siteapp"><link rel="alternate" media="handheld" href="https://blog.csdn.net/noobzzz/article/details/108686383#">
    <meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848">
    <meta name="applicable-device" content="pc">
    <link href="https://g.csdnimg.cn/static/logo/favicon32.ico" rel="shortcut icon" type="image/x-icon">
    <title>JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客</title>
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/osd.js.下载"></script><script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/f(4).txt"></script><script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/f(5).txt" id="google_shimpl"></script><script type="text/javascript" async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/auto_dup"></script><script type="text/javascript" async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(1)"></script><script type="text/javascript" charset="utf-8" async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/apiaccept"></script><script type="text/javascript" async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/trackad.js.下载"></script><script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/push.js.下载"></script><script type="text/javascript" async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(2)"></script><script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/hm.js.下载"></script><script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/push.js(1).下载" id="ttzz"></script><script>
      (function(){ 
        var el = document.createElement("script"); 
        el.src = "https://s3a.pstatp.com/toutiao/push.js?1abfa13dfe74d72d41d83c86d240de427e7cac50c51ead53b2e79d40c7952a23ed7716d05b4a0f683a653eab3e214672511de2457e74e99286eb2c33f4428830"; 
        el.id = "ttzz"; 
        var s = document.getElementsByTagName("script")[0]; 
        s.parentNode.insertBefore(el, s);
      })(window)
    </script>
        <meta name="keywords" content="JUC笔记之尚硅谷周阳老师思维导图整理">
        <meta name="csdn-baidu-search" content="{&quot;autorun&quot;:true,&quot;install&quot;:true,&quot;keyword&quot;:&quot;JUC笔记之尚硅谷周阳老师思维导图整理&quot;}">
    <meta name="description" content="文章目录1. JUC 是什么2. Lock 接口3. Lambda表达式复习--详情请看 on java 84. 线程间通信5. 线程间定制化调用通信6.NotSafeDemo7.多线程锁8. Callable接口9. JUC强大的辅助类讲解10. ReentrantReadWriteLock读写锁11.阻塞队列13. 线程池13. java8之流式计算 -- 详情请看 on java 814.分支合并框架15. 异步回调1. JUC 是什么java.util.concurrent在并发编程中使用的工">
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/blog.js.下载" type="text/javascript"></script>
        <link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/detail_enter-9bf4a3089f.min.css">
    <script type="application/ld+json">{"@context":"https://ziyuan.baidu.com/contexts/cambrian.jsonld","@id":"https://blog.csdn.net/noobzzz/article/details/108686383","appid":"1638831770136827","pubDate":"2020-09-19T22:00:16","title":"JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客","upDate":"2020-09-19T22:00:16"}</script>
        <link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/skin3-template-45808e735f.min.css">
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/jquery-1.9.1.min.js.下载" type="text/javascript"></script>
    <script type="text/javascript">
        var isCorporate = false;//注释删除enterprise
        var username =  "noobzzz";
        var skinImg = "white";
        var blog_address = "https://blog.csdn.net/noobzzz";
        var currentUserName = "";
        var isOwner = false;
        var loginUrl = "http://passport.csdn.net/account/login?from=https://blog.csdn.net/noobzzz/article/details/108686383";
        var blogUrl = "https://blog.csdn.net/";
        var avatar = "https://profile.csdnimg.cn/4/0/2/3_noobzzz";
        var articleTitle = "JUC笔记之尚硅谷周阳老师思维导图整理";
        var articleDesc = "文章目录1. JUC 是什么2. Lock 接口3. Lambda表达式复习--详情请看 on java 84. 线程间通信5. 线程间定制化调用通信6.NotSafeDemo7.多线程锁8. Callable接口9. JUC强大的辅助类讲解10. ReentrantReadWriteLock读写锁11.阻塞队列13. 线程池13. java8之流式计算 -- 详情请看 on java 814.分支合并框架15. 异步回调1. JUC 是什么java.util.concurrent在并发编程中使用的工";
        var articleTitles = "JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客";
        var nickName = "noobzzz";
        var articleDetailUrl = "https://blog.csdn.net/noobzzz/article/details/108686383";
        if(window.location.host.split('.').length == 3) {
            blog_address = blogUrl + username;
        }
        var skinStatus = "White";
        var blogStaticHost = "https://csdnimg.cn/release/blogv2/"
    </script>
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(3)" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/sandalstrap.min.css">
    <style>
        .MathJax, .MathJax_Message, .MathJax_Preview{
            display: none
        }
    </style>
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/ds.js.下载"></script>
<link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/csdn-toolbar-default.css"><script type="text/javascript" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/baidu_opensug-1.0.1.js.下载"></script><link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/collection-box.css"><script type="text/javascript" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/user-login.js.下载"></script><link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/user-tooltip.css"><link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/user-medal.css"><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css">pre{position: relative}pre:hover .hljs-button{display: block}.hljs-button{display: none;position: absolute;right: 4px;top: 4px;font-size: 12px;color: #4d4d4d;background-color: white;padding: 2px 8px;margin: 8px;border-radius: 4px;cursor: pointer; box-shadow: 0 2px 4px rgba(0,0,0,0.05), 0 2px 4px rgba(0,0,0,0.05);}.hljs-button:after{content: attr(data-title)}code .hljs-button{margin: 2px 8px;}</style><style type="text/css">.hljs-ln{border-collapse:collapse}            .hljs-ln td{padding:0}            .hljs-ln-n{text-align: right;padding-right: 8px;}            .hljs-ln-n:before{content:attr(data-line-number)}</style><link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/side-toolbar.css"><link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(4)"><link rel="stylesheet" type="text/css" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/csdn-footer.css"><style type="text/css">.leftPop{width:330px;position: fixed;font-size: 12px;box-shadow: 0 4px 8px 0 rgba(0,0,0,0.10);padding:16px 40px 16px 16px;z-index: 100;}.leftPop .leftPop-close{position: absolute;right: 20px;fill:#70B8F0;cursor: pointer;}</style><style type="text/css">.MathJax_Hover_Frame {border-radius: .25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0px 0px 15px #83A; -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; border: 1px solid #A6D ! important; display: inline-block; position: absolute}
.MathJax_Menu_Button .MathJax_Hover_Arrow {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font-family: 'Courier New',Courier; font-size: 9px; color: #F0F0F0}
.MathJax_Menu_Button .MathJax_Hover_Arrow span {display: block; background-color: #AAA; border: 1px solid; border-radius: 3px; line-height: 0; padding: 4px}
.MathJax_Hover_Arrow:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_Hover_Arrow:hover span {background-color: #CCC!important}
</style><style type="text/css">#MathJax_About {position: fixed; left: 50%; width: auto; text-align: center; border: 3px outset; padding: 1em 2em; background-color: #DDDDDD; color: black; cursor: default; font-family: message-box; font-size: 120%; font-style: normal; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 15px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -khtml-border-radius: 15px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_About.MathJax_MousePost {outline: none}
.MathJax_Menu {position: absolute; background-color: white; color: black; width: auto; padding: 2px; border: 1px solid #CCCCCC; margin: 0; cursor: default; font: menu; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
.MathJax_MenuItem {padding: 2px 2em; background: transparent}
.MathJax_MenuArrow {position: absolute; right: .5em; padding-top: .25em; color: #666666; font-size: .75em}
.MathJax_MenuActive .MathJax_MenuArrow {color: white}
.MathJax_MenuArrow.RTL {left: .5em; right: auto}
.MathJax_MenuCheck {position: absolute; left: .7em}
.MathJax_MenuCheck.RTL {right: .7em; left: auto}
.MathJax_MenuRadioCheck {position: absolute; left: 1em}
.MathJax_MenuRadioCheck.RTL {right: 1em; left: auto}
.MathJax_MenuLabel {padding: 2px 2em 4px 1.33em; font-style: italic}
.MathJax_MenuRule {border-top: 1px solid #CCCCCC; margin: 4px 1px 0px}
.MathJax_MenuDisabled {color: GrayText}
.MathJax_MenuActive {background-color: Highlight; color: HighlightText}
.MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus {background-color: #E8E8E8}
.MathJax_ContextMenu:focus {outline: none}
.MathJax_ContextMenu .MathJax_MenuItem:focus {outline: none}
#MathJax_AboutClose {top: .2em; right: .2em}
.MathJax_Menu .MathJax_MenuClose {top: -10px; left: -10px}
.MathJax_MenuClose {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; font-family: 'Courier New',Courier; font-size: 24px; color: #F0F0F0}
.MathJax_MenuClose span {display: block; background-color: #AAA; border: 1.5px solid; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; line-height: 0; padding: 8px 0 6px}
.MathJax_MenuClose:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_MenuClose:hover span {background-color: #CCC!important}
.MathJax_MenuClose:hover:focus {outline: none}
</style><style type="text/css">.MathJax_Preview .MJXf-math {color: inherit!important}
</style><style type="text/css">.MJX_Assistive_MathML {position: absolute!important; top: 0; left: 0; clip: rect(1px, 1px, 1px, 1px); padding: 1px 0 0 0!important; border: 0!important; height: 1px!important; width: 1px!important; overflow: hidden!important; display: block!important; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none}
.MJX_Assistive_MathML.MJX_Assistive_MathML_Block {width: 100%!important}
</style><style type="text/css">#MathJax_Zoom {position: absolute; background-color: #F0F0F0; overflow: auto; display: block; z-index: 301; padding: .5em; border: 1px solid black; margin: 0; font-weight: normal; font-style: normal; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; box-shadow: 5px 5px 15px #AAAAAA; -webkit-box-shadow: 5px 5px 15px #AAAAAA; -moz-box-shadow: 5px 5px 15px #AAAAAA; -khtml-box-shadow: 5px 5px 15px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_ZoomOverlay {position: absolute; left: 0; top: 0; z-index: 300; display: inline-block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
#MathJax_ZoomFrame {position: relative; display: inline-block; height: 0; width: 0}
#MathJax_ZoomEventTrap {position: absolute; left: 0; top: 0; z-index: 302; display: inline-block; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
</style><style type="text/css">.MathJax_Preview {color: #888}
#MathJax_Message {position: fixed; left: 1em; bottom: 1.5em; background-color: #E6E6E6; border: 1px solid #959595; margin: 0px; padding: 2px 8px; z-index: 102; color: black; font-size: 80%; width: auto; white-space: nowrap}
#MathJax_MSIE_Frame {position: absolute; top: 0; left: 0; width: 0px; z-index: 101; border: 0px; margin: 0px; padding: 0px}
.MathJax_Error {color: #CC0000; font-style: italic}
</style><link rel="preload" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/f(6).txt" as="script"><script type="text/javascript" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/f(6).txt"></script><style type="text/css">.MJXp-script {font-size: .8em}
.MJXp-right {-webkit-transform-origin: right; -moz-transform-origin: right; -ms-transform-origin: right; -o-transform-origin: right; transform-origin: right}
.MJXp-bold {font-weight: bold}
.MJXp-italic {font-style: italic}
.MJXp-scr {font-family: MathJax_Script,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-frak {font-family: MathJax_Fraktur,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-sf {font-family: MathJax_SansSerif,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-cal {font-family: MathJax_Caligraphic,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-mono {font-family: MathJax_Typewriter,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-largeop {font-size: 150%}
.MJXp-largeop.MJXp-int {vertical-align: -.2em}
.MJXp-math {display: inline-block; line-height: 1.2; text-indent: 0; font-family: 'Times New Roman',Times,STIXGeneral,serif; white-space: nowrap; border-collapse: collapse}
.MJXp-display {display: block; text-align: center; margin: 1em 0}
.MJXp-math span {display: inline-block}
.MJXp-box {display: block!important; text-align: center}
.MJXp-box:after {content: " "}
.MJXp-rule {display: block!important; margin-top: .1em}
.MJXp-char {display: block!important}
.MJXp-mo {margin: 0 .15em}
.MJXp-mfrac {margin: 0 .125em; vertical-align: .25em}
.MJXp-denom {display: inline-table!important; width: 100%}
.MJXp-denom > * {display: table-row!important}
.MJXp-surd {vertical-align: top}
.MJXp-surd > * {display: block!important}
.MJXp-script-box > *  {display: table!important; height: 50%}
.MJXp-script-box > * > * {display: table-cell!important; vertical-align: top}
.MJXp-script-box > *:last-child > * {vertical-align: bottom}
.MJXp-script-box > * > * > * {display: block!important}
.MJXp-mphantom {visibility: hidden}
.MJXp-munderover {display: inline-table!important}
.MJXp-over {display: inline-block!important; text-align: center}
.MJXp-over > * {display: block!important}
.MJXp-munderover > * {display: table-row!important}
.MJXp-mtable {vertical-align: .25em; margin: 0 .125em}
.MJXp-mtable > * {display: inline-table!important; vertical-align: middle}
.MJXp-mtr {display: table-row!important}
.MJXp-mtd {display: table-cell!important; text-align: center; padding: .5em 0 0 .5em}
.MJXp-mtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-mlabeledtr {display: table-row!important}
.MJXp-mlabeledtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mlabeledtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MJXp-scale0 {-webkit-transform: scaleX(.0); -moz-transform: scaleX(.0); -ms-transform: scaleX(.0); -o-transform: scaleX(.0); transform: scaleX(.0)}
.MJXp-scale1 {-webkit-transform: scaleX(.1); -moz-transform: scaleX(.1); -ms-transform: scaleX(.1); -o-transform: scaleX(.1); transform: scaleX(.1)}
.MJXp-scale2 {-webkit-transform: scaleX(.2); -moz-transform: scaleX(.2); -ms-transform: scaleX(.2); -o-transform: scaleX(.2); transform: scaleX(.2)}
.MJXp-scale3 {-webkit-transform: scaleX(.3); -moz-transform: scaleX(.3); -ms-transform: scaleX(.3); -o-transform: scaleX(.3); transform: scaleX(.3)}
.MJXp-scale4 {-webkit-transform: scaleX(.4); -moz-transform: scaleX(.4); -ms-transform: scaleX(.4); -o-transform: scaleX(.4); transform: scaleX(.4)}
.MJXp-scale5 {-webkit-transform: scaleX(.5); -moz-transform: scaleX(.5); -ms-transform: scaleX(.5); -o-transform: scaleX(.5); transform: scaleX(.5)}
.MJXp-scale6 {-webkit-transform: scaleX(.6); -moz-transform: scaleX(.6); -ms-transform: scaleX(.6); -o-transform: scaleX(.6); transform: scaleX(.6)}
.MJXp-scale7 {-webkit-transform: scaleX(.7); -moz-transform: scaleX(.7); -ms-transform: scaleX(.7); -o-transform: scaleX(.7); transform: scaleX(.7)}
.MJXp-scale8 {-webkit-transform: scaleX(.8); -moz-transform: scaleX(.8); -ms-transform: scaleX(.8); -o-transform: scaleX(.8); transform: scaleX(.8)}
.MJXp-scale9 {-webkit-transform: scaleX(.9); -moz-transform: scaleX(.9); -ms-transform: scaleX(.9); -o-transform: scaleX(.9); transform: scaleX(.9)}
.MathJax_PHTML .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
</style></head>
<body class="nodata " style=""><div id="BAIDU_DUP_fp_wrapper" style="position: absolute; left: -1px; bottom: -1px; z-index: 0; width: 0px; height: 0px; overflow: hidden; visibility: hidden; display: none;"><iframe id="BAIDU_DUP_fp_iframe" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/o.html" style="width: 0px; height: 0px; visibility: hidden; display: none;"></iframe></div><div id="MathJax_Message" style="display: none;"></div><div id="csdn-toolbar" style="position: fixed; top: 0px; left: 0px; width: 100%; z-index: 9999;">
                    <div class="toolbar-inside">
                      <div class="toolbar-container csdn-toolbar-clearfix">
                        <div class="toolbar-logo toolbar-subMenu-box csdn-toolbar-fl"><a data-report-click="{&quot;spm&quot;:&quot;3001.4476&quot;}" data-report-query="spm=3001.4476" href="https://www.csdn.net/"><img title="CSDN首页" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20201117015525.png"></a>
                    <div class="toolbar-subMenu">
                    <img width="96" height="96" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20201117050118.png">
                  </div></div>
                        <ul class="toolbar-menus csdn-toolbar-fl" style="width: auto;"><li class="active toolbar-subMenu-box">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/&quot;,&quot;spm&quot;:&quot;3001.4477&quot;}" data-report-query="spm=3001.4477" href="https://blog.csdn.net/">博客 </a>
                                <div class="toolbar-subMenu">
                                    <a data-report-click="{&quot;mod&quot;:&quot;1593505904_001&quot;,&quot;spm&quot;:&quot;3001.5106&quot;}" data-report-query="spm=3001.5106" target="_blank" href="https://mp.csdn.net/?utm_medium=fe.tool_bar_second.blog.creative_center">创作中心</a>
                                  </div>
                              </li><li class="">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/&quot;,&quot;spm&quot;:&quot;3001.4482&quot;}" data-report-query="spm=3001.4482" href="https://edu.csdn.net/">学院 </a>
                                
                              </li><li class="toolbar-subMenu-box">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/&quot;,&quot;spm&quot;:&quot;3001.4483&quot;}" data-report-query="spm=3001.4483" href="https://download.csdn.net/">下载 </a>
                                <div class="toolbar-subMenu">
                                    <a data-report-click="{&quot;mod&quot;:&quot;1593505904_002&quot;,&quot;spm&quot;:&quot;3001.5107&quot;}" data-report-query="spm=3001.5107" target="_blank" href="https://mp.csdn.net/console/upDetailed?utm_medium=fe.tool_bar_second.download.my_resources">我的资源</a>
                                  </div>
                              </li><li class="toolbar-subMenu-box">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://bbs.csdn.net/&quot;,&quot;spm&quot;:&quot;3001.4491&quot;}" data-report-query="spm=3001.4491" href="https://bbs.csdn.net/">论坛 </a>
                                <div class="toolbar-subMenu">
                                    <a data-report-click="{&quot;mod&quot;:&quot;1593505904_003&quot;,&quot;spm&quot;:&quot;3001.5135&quot;}" data-report-query="spm=3001.5135" target="_blank" href="https://mp.csdn.net/console/upDetailed?utm_medium=fe.tool_bar_second.bbs.my_points">我的积分</a>
                                  </div>
                              </li><li class="">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://ask.csdn.net/&quot;,&quot;spm&quot;:&quot;3001.4492&quot;}" data-report-query="spm=3001.4492" href="https://ask.csdn.net/">问答 </a>
                                
                              </li><li class="toolbar-subMenu-box">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://codechina.csdn.net/?utm_source=csdn_toolbar&quot;,&quot;spm&quot;:&quot;3001.4493&quot;}" data-report-query="spm=3001.4493" href="https://codechina.csdn.net/?utm_source=csdn_toolbar">代码 </a>
                                <div class="toolbar-subMenu">
                                    <a data-report-click="{&quot;mod&quot;:&quot;1593505904_005&quot;,&quot;spm&quot;:&quot;3001.5108&quot;}" data-report-query="spm=3001.5108" target="_blank" href="https://codechina.csdn.net/projects/new?utm_source=csdn_toolbar&amp;utm_medium=fe.tool_bar_second.code">新建项目</a>
                                  </div>
                              </li><li class="">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://job.csdn.net/&quot;}" href="https://job.csdn.net/">招聘 </a>
                                
                              </li><li class="">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://book.csdn.net/&quot;,&quot;spm&quot;:&quot;3001.4495&quot;}" data-report-query="spm=3001.4495" href="https://book.csdn.net/">电子书 </a>
                                
                              </li><li class="toolbar-subMenu-box">
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_336&quot;,&quot;dest&quot;:&quot;https://mall.csdn.net/vip&quot;,&quot;spm&quot;:&quot;3001.4496&quot;}" data-report-query="spm=3001.4496" href="https://mall.csdn.net/vip">VIP会员 </a>
                                <div class="toolbar-subMenu">
                                    <a data-report-click="{&quot;mod&quot;:&quot;1593505904_004&quot;,&quot;spm&quot;:&quot;3001.4497&quot;}" data-report-query="spm=3001.4497" target="_blank" href="https://csdn.net/vip?utm_medium=fe.tool_bar_second.vip">VIP权益</a>
                                  </div>
                              </li></ul>
                        <div class="toolbar-search onlySearch csdn-toolbar-fl"><div class="toolbar-search-container">
                    <input id="toolbar-search-input" type="text" value="" placeholder="搜CSDN" autocomplete="off">
                    <button id="toolbar-search-button"></button>
                  </div></div>
                        <div class="toolbar-btns onlyUser csdn-toolbar-fr"><div class="toolbar-btn toolbar-btn-write csdn-toolbar-fl ">
                    <a data-report-click="{&quot;spm&quot;:&quot;3001.4503&quot;}" data-report-query="spm=3001.4503" href="https://mp.csdn.net/"><i></i>创作中心</a>
                    
                  </div>
                  <a data-report-click="{&quot;spm&quot;:&quot;3001.4506&quot;}" data-report-query="spm=3001.4506" href="https://i.csdn.net/#/uc/collection-list" class="toolbar-btn toolbar-btn-collect csdn-toolbar-fl">收藏</a>
                  
                  <div class="toolbar-btn toolbar-btn-msg csdn-toolbar-fl">
                    <div class="toolbar-subMenu-box">
                      <a data-report-click="{&quot;spm&quot;:&quot;3001.4508&quot;}" data-report-query="spm=3001.4508" id="toolbar-remind" href="https://live.csdn.net/room/weixin_45610077/TjQZ4WK9?utm_source=eduxy_gonggao_xtk">消息</a>
                    <div class="toolbar-subMenu">
                    <a id="toolbar-announcement" href="https://live.csdn.net/room/weixin_45610077/TjQZ4WK9?utm_source=eduxy_gonggao_xtk">公告</a>
                         
                  </div></div>
                    <div class="toolbar-msg-box"></div>
                  </div>
                  <div class="toolbar-btn-login csdn-toolbar-fl ">
                     <a data-report-click="{&quot;spm&quot;:&quot;3001.5105&quot;}" data-report-query="spm=3001.5105" href="https://passport.csdn.net/account/login">登录/注册</a>
                    
                  </div></div>
                      </div>
                    </div>
                  </div>
        <script>
            var toolbarSearchExt = '{"landingWord":[],"queryWord":"","tag":["java","多线程","并发编程","队列"],"title":"JUC笔记之尚硅谷周阳老师思维导图整理"}';
        </script>
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/csdn-toolbar.js.下载" type="text/javascript"></script>
    <script>
    (function(){
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        }
        else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
    </script>
<link rel="stylesheet" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/blog_code-01256533b5.min.css">
<link rel="stylesheet" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/chart-3456820cac.css">
<div class="main_father clearfix d-flex justify-content-center" style="height: auto !important;"> 
    <div class="container clearfix" id="mainBox" style="height: auto !important;">
        <main>
<script type="text/javascript">
    var blogSensitiveWords = "";
</script>
<div class="blog-content-box">
    <div class="article-header-box">
        <div class="article-header">
            <div class="article-title-box">
                <h1 class="title-article" id="articleContentId">JUC笔记之尚硅谷周阳老师思维导图整理</h1>
            </div>
            <div class="article-info-box">
                <div class="article-bar-top">
                    <img class="article-type-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/original.png" alt="">
                    <div class="bar-content">
                    <a class="follow-nickName" href="https://me.csdn.net/noobzzz" target="_blank" rel="noopener">noobzzz</a>
                    <span class="time">2020-09-19 22:00:16</span>
                    <img class="article-read-img article-heard-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/articleReadEyes.png" alt="">
                    <span class="read-count">421</span>
                    <a id="blog_detail_zk_collection" class="un-collection" data-report-click="{&quot;mod&quot;:&quot;popu_823&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4232&quot;,&quot;ab&quot;:&quot;new&quot;}">
                        <img class="article-collect-img article-heard-img un-collect-status" style="display:inline-block" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarCollect.png" alt="">
                        <img class="article-collect-img article-heard-img collect-status" style="display:none" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarCollectionActive.png" alt="">
                        <span class="name">收藏</span>
                        <span class="get-collection">
                            1
                        </span>
                    </a>
                    </div>
                </div>
                <div class="blog-tags-box">
                    <div class="tags-box artic-tag-box">
                            <span class="label">分类专栏：</span>
                                <a class="tag-link" href="https://blog.csdn.net/noobzzz/category_10403818.html" target="_blank" rel="noopener">JUC</a>
                                <a class="tag-link" href="https://blog.csdn.net/noobzzz/category_10403819.html" target="_blank" rel="noopener">JAVA</a>
                            <span class="label">文章标签：</span>
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;java&quot;,&quot;ab&quot;:&quot;new&quot;}" class="tag-link" href="https://www.csdn.net/gather_24/NtTaIg5sMzYyLWJsb2cO0O0O.html" target="_blank" rel="noopener">java</a>
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;多线程&quot;,&quot;ab&quot;:&quot;new&quot;}" class="tag-link" href="https://www.csdn.net/gather_2d/MtTaEg0sMzM0MjItYmxvZwO0O0OO0O0O.html" target="_blank" rel="noopener">多线程</a>
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;并发编程&quot;,&quot;ab&quot;:&quot;new&quot;}" class="tag-link" href="https://www.csdn.net/gather_29/MtTaEg0sMjgwMjktYmxvZwO0O0OO0O0O.html" target="_blank" rel="noopener">并发编程</a>
                                <a data-report-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4223&quot;,&quot;strategy&quot;:&quot;队列&quot;,&quot;ab&quot;:&quot;new&quot;}" class="tag-link" href="https://www.csdn.net/gather_27/MtTaEg0sMDI2ODktYmxvZwO0O0OO0O0O.html" target="_blank" rel="noopener">队列</a>
                    </div>
                </div>
                <div class="up-time"><span>最后发布:2020-09-19 22:00:16</span><span>首次发布:2020-09-19 22:00:16</span></div>
                <div class="slide-content-box">
                    <div class="article-copyright">
                        <div class="creativecommons">
                            版权声明：本文为博主原创文章，遵循<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener"> CC 4.0 BY-SA </a>版权协议，转载请附上原文出处链接和本声明。
                        </div>
                        <div class="article-source-link">
                            本文链接：<a href="https://blog.csdn.net/noobzzz/article/details/108686383" target="_blank">https://blog.csdn.net/noobzzz/article/details/108686383</a>
                        </div>
                    </div>
                </div>
                <div class="operating">
                    <a class="href-article-edit slide-toggle">版权</a>
                </div>
            </div>
        </div>
    </div>
    <article class="baidu_pl">
        <div id="article_content" class="article_content clearfix">
        <link rel="stylesheet" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/ck_htmledit_views-b5506197d8.css">
                <div id="content_views" class="markdown_views prism-atom-one-light">
                    <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                    </svg>
                    <p></p>
<div class="toc">
 <h3><a name="t0"></a><a name="t0"></a>文章目录</h3>
 <ul><li><ul><li><ul><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#1_JUC__1" target="_self">1. JUC 是什么</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#2_Lock__145" target="_self">2. Lock 接口</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#3_Lambda_on_java_8_181" target="_self">3. Lambda表达式复习--详情请看 on java 8</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#4__182" target="_self">4. 线程间通信</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#5__196" target="_self">5. 线程间定制化调用通信</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#6NotSafeDemo_321" target="_self">6.NotSafeDemo</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#7_374" target="_self">7.多线程锁</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#8_Callable_441" target="_self">8. Callable接口</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#9_JUC_479" target="_self">9. JUC强大的辅助类讲解</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#10_ReentrantReadWriteLock_499" target="_self">10. ReentrantReadWriteLock读写锁</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#11_551" target="_self">11.阻塞队列</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#13__595" target="_self">13. 线程池</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#13_java8___on_java_8_683" target="_self">13. java8之流式计算 -- 详情请看 on java 8</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#14_685" target="_self">14.分支合并框架</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#15__724" target="_self">15. 异步回调</a></li></ul>
  </li></ul>
 </li></ul>
</div>
<p></p> 
<h3><a name="t1"></a><a name="t1"></a><a id="1_JUC__1"></a>1. JUC 是什么</h3> 
<ol><li><code>java.util.concurrent</code>在并发编程中使用的工具类</li><li>进程/线程回顾 
  <ol><li> <p>进程/线程是什么?</p> 
    <blockquote> 
     <p><strong>进程</strong>：进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元，在传统的操作系统中，进程既是基本的分配单元，也是基本的执行单元。</p> 
     <p><strong>线程</strong>：通常在一个进程中可以包含若干个线程，当然一个进程中至少有一个线程，不然没有存在的意义。线程可以利用进程所拥有的资源，在引入线程的操作系统中，通常都是把进程作为分配资源的基本单位，而把线程作为独立运行和独立调度的基本单位，由于线程比进程更小，基本上不拥有系统资源，故对它的调度所付出的开销就会小得多，能更高效的提高系统多个程序间并发执行的程度。</p> 
    </blockquote> </li><li> <p>进程/线程例子?</p> 
    <blockquote> 
     <p>使用QQ，查看进程一定有一个QQ.exe的进程，我可以用qq和A文字聊天，和B视频聊天，给C传文件，给D发一段语言，QQ支持录入信息的搜索。大四的时候写论文，用word写论文，同时用QQ音乐放音乐，同时用QQ聊天，多个进程。word如没有保存，停电关机，再通电后打开word可以恢复之前未保存的文档，word也会检查你的拼写，两个线程：容灾备份，语法检查</p> 
    </blockquote> </li><li> <p>线程状态</p> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;">Thread<span class="token punctuation">.</span>State   
<span class="token keyword">public</span> <span class="token keyword">enum</span> State<span class="token punctuation">{<!-- --></span>    

<span class="token comment">/** 

  * Thread state for a thread which has not yet started.     

  */</span>    
    NEW<span class="token punctuation">,</span><span class="token punctuation">(</span>新建<span class="token punctuation">)</span>   

 <span class="token comment">/**     

   * Thread state for a runnable thread.  A thread in the runnable    

   * state is executing in the Java virtual machine but it may     

   * be waiting for other resources from the operating system  

   * such as processor. 

   */</span>   
      RUNNABLE<span class="token punctuation">,</span>（准备就绪）    

<span class="token comment">/**  

   * Thread state for a thread blocked waiting for a monitor lock. 

   * A thread in the blocked state is waiting for a monitor lock   

   * to enter a synchronized block/method or   

   * reenter a synchronized block/method after calling  

   * {@link Object#wait() Object.wait}. 

   */</span>   
      BLOCKED<span class="token punctuation">,</span>（阻塞） 

 <span class="token comment">/**  

   * Thread state for a waiting thread.  

   * A thread is in the waiting state due to calling one of the 

   * following methods:  

   * &lt;ul&gt;    

   *   &lt;li&gt;{@link Object#wait() Object.wait} with no timeout&lt;/li&gt; 

   *   &lt;li&gt;{@link #join() Thread.join} with no timeout&lt;/li&gt;  

   *   &lt;li&gt;{@link LockSupport#park() LockSupport.park}&lt;/li&gt; 

   * &lt;/ul&gt;  

   *   

   * &lt;p&gt;A thread in the waiting state is waiting for another thread to  

   * perform a particular action.  

   *  

   * For example, a thread that has called &lt;tt&gt;Object.wait()&lt;/tt&gt;  

   * on an object is waiting for another thread to call  

   * &lt;tt&gt;Object.notify()&lt;/tt&gt; or &lt;tt&gt;Object.notifyAll()&lt;/tt&gt; on 

   * that object. A thread that has called &lt;tt&gt;Thread.join()&lt;/tt&gt;  

   * is waiting for a specified thread to terminate.  

   */</span>    
      WAITING<span class="token punctuation">,</span>（不见不散）

<span class="token comment">/**   

  * Thread state for a waiting thread with a specified waiting time. 

  * A thread is in the timed waiting state due to calling one of 

  * the following methods with a specified positive waiting time: 

  * &lt;ul&gt;  

  *   &lt;li&gt;{@link #sleep Thread.sleep}&lt;/li&gt;  

  *   &lt;li&gt;{@link Object#wait(long) Object.wait} with timeout&lt;/li&gt;  

  *   &lt;li&gt;{@link #join(long) Thread.join} with timeout&lt;/li&gt; 

  *   &lt;li&gt;{@link LockSupport#parkNanos LockSupport.parkNanos}&lt;/li&gt;  

  *   &lt;li&gt;{@link LockSupport#parkUntil LockSupport.parkUntil}&lt;/li&gt; 

  * &lt;/ul&gt;   

  */</span>    
      TIMED_WAITING<span class="token punctuation">,</span>（过时不候）  

<span class="token comment">/**  
  * Thread state for a terminated thread.     * The thread has completed execution.         
  */</span>    
      TERMINATED<span class="token punctuation">;</span><span class="token punctuation">(</span>终结<span class="token punctuation">)</span><span class="token punctuation">}</span>  
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li><li style="color: rgb(153, 153, 153);">52</li><li style="color: rgb(153, 153, 153);">53</li><li style="color: rgb(153, 153, 153);">54</li><li style="color: rgb(153, 153, 153);">55</li><li style="color: rgb(153, 153, 153);">56</li><li style="color: rgb(153, 153, 153);">57</li><li style="color: rgb(153, 153, 153);">58</li><li style="color: rgb(153, 153, 153);">59</li><li style="color: rgb(153, 153, 153);">60</li><li style="color: rgb(153, 153, 153);">61</li><li style="color: rgb(153, 153, 153);">62</li><li style="color: rgb(153, 153, 153);">63</li><li style="color: rgb(153, 153, 153);">64</li><li style="color: rgb(153, 153, 153);">65</li><li style="color: rgb(153, 153, 153);">66</li><li style="color: rgb(153, 153, 153);">67</li><li style="color: rgb(153, 153, 153);">68</li><li style="color: rgb(153, 153, 153);">69</li><li style="color: rgb(153, 153, 153);">70</li><li style="color: rgb(153, 153, 153);">71</li><li style="color: rgb(153, 153, 153);">72</li><li style="color: rgb(153, 153, 153);">73</li><li style="color: rgb(153, 153, 153);">74</li><li style="color: rgb(153, 153, 153);">75</li><li style="color: rgb(153, 153, 153);">76</li><li style="color: rgb(153, 153, 153);">77</li><li style="color: rgb(153, 153, 153);">78</li><li style="color: rgb(153, 153, 153);">79</li><li style="color: rgb(153, 153, 153);">80</li><li style="color: rgb(153, 153, 153);">81</li><li style="color: rgb(153, 153, 153);">82</li><li style="color: rgb(153, 153, 153);">83</li><li style="color: rgb(153, 153, 153);">84</li><li style="color: rgb(153, 153, 153);">85</li><li style="color: rgb(153, 153, 153);">86</li><li style="color: rgb(153, 153, 153);">87</li><li style="color: rgb(153, 153, 153);">88</li><li style="color: rgb(153, 153, 153);">89</li><li style="color: rgb(153, 153, 153);">90</li><li style="color: rgb(153, 153, 153);">91</li><li style="color: rgb(153, 153, 153);">92</li><li style="color: rgb(153, 153, 153);">93</li><li style="color: rgb(153, 153, 153);">94</li><li style="color: rgb(153, 153, 153);">95</li><li style="color: rgb(153, 153, 153);">96</li><li style="color: rgb(153, 153, 153);">97</li><li style="color: rgb(153, 153, 153);">98</li><li style="color: rgb(153, 153, 153);">99</li><li style="color: rgb(153, 153, 153);">100</li><li style="color: rgb(153, 153, 153);">101</li><li style="color: rgb(153, 153, 153);">102</li><li style="color: rgb(153, 153, 153);">103</li><li style="color: rgb(153, 153, 153);">104</li><li style="color: rgb(153, 153, 153);">105</li><li style="color: rgb(153, 153, 153);">106</li></ul></pre> </li><li> <p><code>wait/sleep</code>的区别</p> 
    <blockquote> 
     <p><code>wait/sleep</code>功能都是当前线程暂停，有什么区别？</p> 
     <p><strong>wait</strong>放开手去睡，放开手里的锁</p> 
     <p><strong>sleep</strong>握紧手去睡，醒了手里还有锁</p> 
    </blockquote> </li><li> <p>并发/并行</p> 
    <blockquote> 
     <p>并发：同一时刻多个线程在访问同一个资源，多个线程对一个点</p> 
     <p>例子：小米9今天上午10点，限量抢购 春运抢票 电商秒杀…</p> 
     <p>并行：多项工作一起执行，之后再汇总</p> 
     <p>例子：泡方便面，电水壶烧水，一边撕调料倒入桶中</p> 
    </blockquote> </li></ol> </li></ol> 
<h3><a name="t2"></a><a name="t2"></a><a id="2_Lock__145"></a>2. Lock 接口</h3> 
<ol><li> <p><code>Synchronized</code></p> 
  <ol><li><strong>多线程编程模板</strong>(上) 
    <ol><li>线程<code>=&gt;</code>操作<code>=&gt;</code>资源类</li><li>高内聚低耦合</li></ol> </li><li>实现步骤 
    <ol><li>创建资源类</li><li>资源类里创建同步方法,同步代码块</li></ol> </li><li>例子卖票程序</li></ol> </li><li> <p><code>Lock</code> 接口</p> 
  <ol><li>是什么</li></ol> 
  <blockquote> 
   <p>Lock implementations provide more extensive locking operations than can be obtained using synchronized methods and statements. They allow more flexible structuring, may have quite different properties, and may support multiple associated Condition objects.</p> 
  </blockquote> 
  <ol start="2"><li>Lock接口的实现<code>ReentrantLock</code> 可重入锁</li></ol> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;">    Lock lock <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ReentrantLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    lock<span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">try</span><span class="token punctuation">{<!-- --></span>
      <span class="token comment">//dosomething;</span>
    <span class="token punctuation">}</span><span class="token keyword">catch</span><span class="token punctuation">(</span>Exception e<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>

    <span class="token punctuation">}</span><span class="token keyword">finally</span><span class="token punctuation">{<!-- --></span>
      lock<span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li></ul></pre> 
  <ol start="3"><li>创建线程的三种方式 
    <ol><li>继承<code>Thread</code>–不能这么写</li><li><code>new Thread()</code>– 不能这么写</li><li><code>new Thread(Runnable runnable,string name)</code> –<code>lambda</code>表达式</li></ol> </li><li><strong>实现<code>runnable</code>的方法</strong> 
    <ol><li>新建类实现<code>runnable</code>接口,会新增类</li><li>匿名内部类</li><li><code>lambda</code>表达式,简洁明了</li></ol> </li></ol> </li></ol> 
<h3><a name="t3"></a><a name="t3"></a><a id="3_Lambda_on_java_8_181"></a>3. Lambda表达式复习–详情请看 on java 8</h3> 
<h3><a name="t4"></a><a name="t4"></a><a id="4__182"></a>4. 线程间通信</h3> 
<ol><li> <p>面试题:俩个线程打印</p> 
  <blockquote> 
   <p>两个线程，一个线程打印1-52，另一个打印字母A-Z打印顺序为12A34B…5152Z,要求用线程间通信</p> 
  </blockquote> </li><li> <p>线程间通信:<br> 1. 生产者+消费者<br> 2. 通知等待唤醒机制</p> </li><li> <p><strong>多线程编程模板</strong>(中)</p> 
  <ol><li>判断=&gt;干活=&gt;通知<br> 2. 虚假唤醒的解决办法,使用while代替if判断</li></ol> </li><li> <p>java新版实现<br> 1. <code>synchronized</code>-&gt;<code>wait</code>-&gt;<code>notifyall</code><br> 2. <code>lock</code>-&gt;<code>await</code>-&gt;<code>signal</code></p> </li></ol> 
<h3><a name="t5"></a><a name="t5"></a><a id="5__196"></a>5. 线程间定制化调用通信</h3> 
<blockquote> 
 <p>1、有顺序通知，需要有标识位<br> 2、有一个锁<code>Lock</code>，3把钥匙<code>Condition</code><br> 3、判断标志位<br> 4、输出线程名+第几次+第几轮<br> 5、修改标志位，通知下一个</p> 
</blockquote> 
<ol><li>代码</li></ol> 
<pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"><span class="token keyword">package</span> com<span class="token punctuation">.</span>atguigu<span class="token punctuation">.</span>thread<span class="token punctuation">;</span> 
<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>locks<span class="token punctuation">.</span>Condition<span class="token punctuation">;</span>
<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>locks<span class="token punctuation">.</span>Lock<span class="token punctuation">;</span>
<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>locks<span class="token punctuation">.</span>ReentrantLock<span class="token punctuation">;</span>  
<span class="token keyword">class</span> <span class="token class-name">ShareResource</span><span class="token punctuation">{<!-- --></span>  
    <span class="token keyword">private</span> <span class="token keyword">int</span> number <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
    <span class="token comment">//1:A 2:B 3:C   </span>
    <span class="token keyword">private</span> Lock lock <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ReentrantLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token keyword">private</span> Condition c1 <span class="token operator">=</span> lock<span class="token punctuation">.</span><span class="token function">newCondition</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token keyword">private</span> Condition c2 <span class="token operator">=</span> lock<span class="token punctuation">.</span><span class="token function">newCondition</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token keyword">private</span> Condition c3 <span class="token operator">=</span> lock<span class="token punctuation">.</span><span class="token function">newCondition</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">print5</span><span class="token punctuation">(</span><span class="token keyword">int</span> totalLoopNumber<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>     
        lock<span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>     
        <span class="token keyword">try</span> <span class="token punctuation">{<!-- --></span>       
            <span class="token comment">//1 判断       </span>
            <span class="token keyword">while</span><span class="token punctuation">(</span>number <span class="token operator">!=</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>          
                <span class="token comment">//A 就要停止          </span>
                c1<span class="token punctuation">.</span><span class="token function">await</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>       
            <span class="token punctuation">}</span>       
            <span class="token comment">//2 干活       </span>
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span><span class="token number">5</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>          
                System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"\t"</span><span class="token operator">+</span>i<span class="token operator">+</span>"\t
                                   totalLoopNumber<span class="token operator">:</span> "<span class="token operator">+</span>totalLoopNumber<span class="token punctuation">)</span><span class="token punctuation">;</span> 
            <span class="token punctuation">}</span>       
            <span class="token comment">//3 通知      </span>
            number <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>      
            c2<span class="token punctuation">.</span><span class="token function">signal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    
        <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>    
            e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token punctuation">}</span> <span class="token keyword">finally</span> <span class="token punctuation">{<!-- --></span>    
            lock<span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token punctuation">}</span> 
    <span class="token punctuation">}</span> 
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">print10</span><span class="token punctuation">(</span><span class="token keyword">int</span> totalLoopNumber<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span> 
        lock<span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    
        <span class="token keyword">try</span><span class="token punctuation">{<!-- --></span>     
            <span class="token comment">//1 判断      </span>
            <span class="token keyword">while</span><span class="token punctuation">(</span>number <span class="token operator">!=</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>        
                <span class="token comment">//A 就要停止   </span>
                c2<span class="token punctuation">.</span><span class="token function">await</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    
            <span class="token punctuation">}</span>       
            <span class="token comment">//2 干活      </span>
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span><span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>         
                System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"\t"</span><span class="token operator">+</span>i<span class="token operator">+</span>"\t
                                   totalLoopNumber<span class="token operator">:</span> "<span class="token operator">+</span>totalLoopNumber<span class="token punctuation">)</span><span class="token punctuation">;</span>     
            <span class="token punctuation">}</span>      
            <span class="token comment">//3 通知    </span>
            number <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">;</span>      
            c3<span class="token punctuation">.</span><span class="token function">signal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>  
            e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token punctuation">}</span> <span class="token keyword">finally</span> <span class="token punctuation">{<!-- --></span>    
            lock<span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token punctuation">}</span>  
    <span class="token punctuation">}</span>     
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">print15</span><span class="token punctuation">(</span><span class="token keyword">int</span> totalLoopNumber<span class="token punctuation">)</span>  <span class="token punctuation">{<!-- --></span> 
        lock<span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token keyword">try</span><span class="token punctuation">{<!-- --></span>    
            <span class="token comment">//1 判断   </span>
            <span class="token keyword">while</span><span class="token punctuation">(</span>number <span class="token operator">!=</span> <span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>     
                <span class="token comment">//A 就要停止    </span>
                c3<span class="token punctuation">.</span><span class="token function">await</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>     
            <span class="token punctuation">}</span>    
            <span class="token comment">//2 干活     </span>
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span><span class="token number">15</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>     
                System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"\t"</span><span class="token operator">+</span>i<span class="token operator">+</span>"\t
                                   totalLoopNumber<span class="token operator">:</span> "<span class="token operator">+</span>totalLoopNumber<span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token punctuation">}</span>     
            <span class="token comment">//3 通知     </span>
            number <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>   
            c1<span class="token punctuation">.</span><span class="token function">signal</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>   
            e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token punctuation">}</span> <span class="token keyword">finally</span> <span class="token punctuation">{<!-- --></span>    
            lock<span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
        <span class="token punctuation">}</span>
    <span class="token punctuation">}</span> 
<span class="token punctuation">}</span>  
<span class="token comment">/** 
  *  
  * @Description: 
  * 多线程之间按顺序调用，实现A-&gt;B-&gt;C 
  * 三个线程启动，要求如下： 
  *  
  * AA打印5次，BB打印10次，CC打印15次 
  * 接着 
  * AA打印5次，BB打印10次，CC打印15次 
  * ......来10轮  
  * 
  */</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">ThreadOrderAccess</span><span class="token punctuation">{<!-- --></span> 
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>   
        ShareResource sr <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ShareResource</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{<!-- --></span>  
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span><span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>        
                sr<span class="token punctuation">.</span><span class="token function">print5</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token punctuation">}</span>   
        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"AA"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{<!-- --></span> 
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span><span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>       
                sr<span class="token punctuation">.</span><span class="token function">print10</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>  
        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"BB"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{<!-- --></span>    
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">&lt;=</span><span class="token number">10</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>  
            <span class="token punctuation">{<!-- --></span>       
                sr<span class="token punctuation">.</span><span class="token function">print15</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token punctuation">}</span>    
        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"CC"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>      
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>             
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li><li style="color: rgb(153, 153, 153);">52</li><li style="color: rgb(153, 153, 153);">53</li><li style="color: rgb(153, 153, 153);">54</li><li style="color: rgb(153, 153, 153);">55</li><li style="color: rgb(153, 153, 153);">56</li><li style="color: rgb(153, 153, 153);">57</li><li style="color: rgb(153, 153, 153);">58</li><li style="color: rgb(153, 153, 153);">59</li><li style="color: rgb(153, 153, 153);">60</li><li style="color: rgb(153, 153, 153);">61</li><li style="color: rgb(153, 153, 153);">62</li><li style="color: rgb(153, 153, 153);">63</li><li style="color: rgb(153, 153, 153);">64</li><li style="color: rgb(153, 153, 153);">65</li><li style="color: rgb(153, 153, 153);">66</li><li style="color: rgb(153, 153, 153);">67</li><li style="color: rgb(153, 153, 153);">68</li><li style="color: rgb(153, 153, 153);">69</li><li style="color: rgb(153, 153, 153);">70</li><li style="color: rgb(153, 153, 153);">71</li><li style="color: rgb(153, 153, 153);">72</li><li style="color: rgb(153, 153, 153);">73</li><li style="color: rgb(153, 153, 153);">74</li><li style="color: rgb(153, 153, 153);">75</li><li style="color: rgb(153, 153, 153);">76</li><li style="color: rgb(153, 153, 153);">77</li><li style="color: rgb(153, 153, 153);">78</li><li style="color: rgb(153, 153, 153);">79</li><li style="color: rgb(153, 153, 153);">80</li><li style="color: rgb(153, 153, 153);">81</li><li style="color: rgb(153, 153, 153);">82</li><li style="color: rgb(153, 153, 153);">83</li><li style="color: rgb(153, 153, 153);">84</li><li style="color: rgb(153, 153, 153);">85</li><li style="color: rgb(153, 153, 153);">86</li><li style="color: rgb(153, 153, 153);">87</li><li style="color: rgb(153, 153, 153);">88</li><li style="color: rgb(153, 153, 153);">89</li><li style="color: rgb(153, 153, 153);">90</li><li style="color: rgb(153, 153, 153);">91</li><li style="color: rgb(153, 153, 153);">92</li><li style="color: rgb(153, 153, 153);">93</li><li style="color: rgb(153, 153, 153);">94</li><li style="color: rgb(153, 153, 153);">95</li><li style="color: rgb(153, 153, 153);">96</li><li style="color: rgb(153, 153, 153);">97</li><li style="color: rgb(153, 153, 153);">98</li><li style="color: rgb(153, 153, 153);">99</li><li style="color: rgb(153, 153, 153);">100</li><li style="color: rgb(153, 153, 153);">101</li><li style="color: rgb(153, 153, 153);">102</li><li style="color: rgb(153, 153, 153);">103</li><li style="color: rgb(153, 153, 153);">104</li><li style="color: rgb(153, 153, 153);">105</li><li style="color: rgb(153, 153, 153);">106</li><li style="color: rgb(153, 153, 153);">107</li><li style="color: rgb(153, 153, 153);">108</li><li style="color: rgb(153, 153, 153);">109</li><li style="color: rgb(153, 153, 153);">110</li><li style="color: rgb(153, 153, 153);">111</li></ul></pre> 
<h3><a name="t6"></a><a name="t6"></a><a id="6NotSafeDemo_321"></a>6.NotSafeDemo</h3> 
<ol><li>需求–请举例说明集合类是不安全的</li><li>证明集合不安全 
  <ol><li><strong><code>java.util.ConcurrentModificationException</code></strong> ArrayList在迭代的时候如果同时对其进行修改就会抛出</li><li><strong><code>java.util.ConcurrentModificationException</code></strong> 异常并发修改异常</li></ol> </li><li>解决方案 
  <ol><li> <p><code>Vector</code></p> </li><li> <p><code>Collections</code> 工具类</p> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;">List<span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">&gt;</span></span> list <span class="token operator">=</span> Collections<span class="token punctuation">.</span><span class="token function">synchronizedList</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li></ul></pre> </li><li> <p><strong>写时复制</strong></p> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;">List<span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">&gt;</span></span> list <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">CopyOnWriteArrayList</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li></ul></pre> 
    <ol><li> <p>不加锁性能提升出错误，加锁数据一致性能下降</p> </li><li> <p><code>CopyOnWriteArrayList</code>定义</p> 
      <blockquote> 
       <p>A thread-safe variant of ArrayList in which all mutative operations (add, set, and so on) are implemented by making a fresh copy of the underlying array.CopyOnWriteArrayList</p> 
       <p>是arraylist的一种线程安全变体，其中所有可变操作（add、set等）都是通过生成底层数组的新副本来实现的。</p> 
      </blockquote> </li><li> <p><code>CopyOnWrite</code>理论</p> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"> <span class="token comment">/** 
   * Appends the specified element to the end of this list. 
   * 
   * @param e element to be appended to this list 
   * @return {@code true} (as specified by {@link Collection#add}) 
   */</span>
<span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">add</span><span class="token punctuation">(</span>E e<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>   
    <span class="token keyword">final</span> ReentrantLock lock <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>lock<span class="token punctuation">;</span>  
    lock<span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token keyword">try</span> <span class="token punctuation">{<!-- --></span>   
        Object<span class="token punctuation">[</span><span class="token punctuation">]</span> elements <span class="token operator">=</span> <span class="token function">getArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    
        <span class="token keyword">int</span> len <span class="token operator">=</span> elements<span class="token punctuation">.</span>length<span class="token punctuation">;</span>     
        Object<span class="token punctuation">[</span><span class="token punctuation">]</span> newElements <span class="token operator">=</span> Arrays<span class="token punctuation">.</span><span class="token function">copyOf</span><span class="token punctuation">(</span>elements<span class="token punctuation">,</span> len <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        		newElements<span class="token punctuation">[</span>len<span class="token punctuation">]</span> <span class="token operator">=</span> e<span class="token punctuation">;</span>     
        <span class="token function">setArray</span><span class="token punctuation">(</span>newElements<span class="token punctuation">)</span><span class="token punctuation">;</span>    
        <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>   
    <span class="token punctuation">}</span> <span class="token keyword">finally</span> <span class="token punctuation">{<!-- --></span>     
        lock<span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>   
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li></ul></pre> 
      <blockquote> 
       <p><code>CopyOnWrite</code>容器即写时复制的容器。往一个容器添加元素的时候，不直接往当前容器<code>Object[]</code>添加，而是先将当前容器<code>Object[]</code>进行<code>Copy</code>，复制出一个新的容器<code>Object[] newElements</code>，然后向新的容器<code>Object[] newElements</code>里添加元素。添加元素后，再将原容器的引用指向新的容器<code>setArray(newElements)</code>。这样做的好处是可以对<code>CopyOnWrite</code>容器进行并发的读，而不需要加锁，因为当前容器不会添加任何元素。所以<code>CopyOnWrite</code>容器也是一种读写分离的思想，读和写不同的容器。</p> 
      </blockquote> </li></ol> </li></ol> </li></ol> 
<h3><a name="t7"></a><a name="t7"></a><a id="7_374"></a>7.多线程锁</h3> 
<ol><li> <p>锁的八个问题–俩个方法都是被<code>syncronized</code>修饰的,短信线程先运行</p> 
  <blockquote> 
   <p>1 标准访问，先打印短信还是邮件<br> 2 停4秒在短信方法内，先打印短信还是邮件<br> 3 普通的hello方法，是先打短信还是hello<br> 4 现在有两部手机，先打印短信还是邮件–此时短信方法内还有sleep<br> 5 两个静态同步方法，1部手机，先打印短信还是邮件<br> 6 两个静态同步方法，2部手机，先打印短信还是邮件<br> 7 1个静态同步方法，1个普通同步方法，1部手机，先打印短信还是邮件<br> 8 1个静态同步方法，1个普通同步方法，2部手机，先打印短信还是邮件<br> <strong>运行答案</strong>：1、短信2、短信3、Hello4、邮件5、短信6、短信7、邮件8、邮件</p> 
  </blockquote> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"><span class="token keyword">package</span> com<span class="token punctuation">.</span>atguigu<span class="token punctuation">.</span>thread<span class="token punctuation">;</span> 
<span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>TimeUnit<span class="token punctuation">;</span>  
<span class="token keyword">class</span> <span class="token class-name">Phone</span><span class="token punctuation">{<!-- --></span>  
    <span class="token keyword">public</span>  <span class="token keyword">synchronized</span> <span class="token keyword">void</span> <span class="token function">sendSMS</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception <span class="token punctuation">{<!-- --></span>      
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"------sendSMS"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    <span class="token keyword">public</span> <span class="token keyword">synchronized</span> <span class="token keyword">void</span> <span class="token function">sendEmail</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception <span class="token punctuation">{<!-- --></span> 
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"------sendEmail"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
    <span class="token punctuation">}</span> 
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">getHello</span><span class="token punctuation">(</span><span class="token punctuation">)</span>  <span class="token punctuation">{<!-- --></span> 
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"------getHello"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
    <span class="token punctuation">}</span> 
<span class="token punctuation">}</span> 
<span class="token comment">/** 
  *  
  * @Description: 8锁 
  *  1 标准访问，先打印短信还是邮件 
  *  2 停4秒在短信方法内，先打印短信还是邮件 
  *  3 新增普通的hello方法，是先打短信还是hello 
  *  4 现在有两部手机，先打印短信还是邮件 
  *  5 两个静态同步方法，1部手机，先打印短信还是邮件 
  *  6 两个静态同步方法，2部手机，先打印短信还是邮件 
  *  7 1个静态同步方法,1个普通同步方法，1部手机，先打印短信还是邮件 
  *  8 1个静态同步方法,1个普通同步方法，2部手机，先打印短信还是邮件 
  * --------------------------------- 
  *  
  */</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Lock_8</span><span class="token punctuation">{<!-- --></span>
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception <span class="token punctuation">{<!-- --></span>  
        Phone phone <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Phone</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
        Phone phone2 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Phone</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{<!-- --></span> 
            <span class="token keyword">try</span> <span class="token punctuation">{<!-- --></span>  
                phone<span class="token punctuation">.</span><span class="token function">sendSMS</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
            <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>  
                e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
            <span class="token punctuation">}</span>  
        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"AA"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
        Thread<span class="token punctuation">.</span><span class="token function">sleep</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span><span class="token operator">&gt;</span> <span class="token punctuation">{<!-- --></span>
            <span class="token keyword">try</span> <span class="token punctuation">{<!-- --></span>  
                phone<span class="token punctuation">.</span><span class="token function">sendEmail</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
                <span class="token comment">//phone.getHello();  </span>
                <span class="token comment">//phone2.sendEmail(); </span>
            <span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>   
                e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token punctuation">}</span>  
        <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"BB"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>  
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li></ul></pre> </li></ol> 
<h3><a name="t8"></a><a name="t8"></a><a id="8_Callable_441"></a>8. Callable接口</h3> 
<ol><li>是什么</li></ol> 
<blockquote> 
 <p>面试题:获得多线程的方法几种?<br> （1）继承<code>thread</code>类<br> （2）<code>runnable</code>接口<br> 如果只回答这两个你连被问到<code>juc</code>的机会都没有<br> <strong>正确答案如下</strong>： 传统的是继承<code>thread</code>类和实现<code>runnable</code>接口，java5以后又有实现<code>callable</code>接口和<code>java的线程池</code>获得</p> 
</blockquote> 
<ol start="2"><li>与runnale对比</li></ol> 
<blockquote> 
 <p>面试题:<code>callable</code>接口与runnable接口的区别？<br> 答：<br> （1）是否有返回值<br> （2）是否抛异常<br> （3）落地方法不一样，一个是run，一个是call</p> 
</blockquote> 
<ol start="3"><li>怎么用 
  <ol><li> <p>直接替换runnable是否可行?</p> 
    <blockquote> 
     <p>不可行，因为：<code>thread</code>类的构造方法根本没有<code>Callable</code></p> 
    </blockquote> </li><li> <p>认识不同的人找中间人</p> 
    <blockquote> 
     <p>这像认识一个不认识的同学，我可以找中间人介绍,中间人是什么？<br> java多态，一个类可以实现多个接口!!!<br> FutureTask ft = new FutureTask(new MyThread());</p> 
     <p>new Thread(ft, “AA”).start();</p> 
     <p>运行成功后如何获得返回值？ft.get();</p> 
    </blockquote> </li><li> <p>FutrueTask</p> 
    <blockquote> 
     <p>未来的任务，用它就干一件事，异步调用main方法就像一个冰糖葫芦，一个个方法由main串起来。但解决不了一个问题：正常调用挂起堵塞问题<br> 例子：<br> （1）老师上着课，口渴了，去买水不合适，讲课线程继续，我可以单起个线程找班长帮忙买水，水买回来了放桌上，我需要的时候再去get。<br> （2）4个同学，A算1+20,B算21+30,C算31*到40,D算41+50，是不是C的计算量有点大啊，FutureTask单起个线程给C计算，我先汇总ABD，最后等C计算完了再汇总C，拿到最终结果<br> （3）高考：会做的先做，不会的放在后面做</p> 
    </blockquote> 
    <ul><li>原理</li></ul> 
    <blockquote> 
     <p>在主线程中需要执行比较耗时的操作时，但又不想阻塞主线程时，可以把这些作业交给<code>Future对象</code>在后台完成，当主线程将来需要时，就可以通过<code>Future对象</code>获得后台作业的计算结果或者执行状态。一般<code>FutureTask</code>多用于耗时的计算，主线程可以在完成自己的任务后，再去获取结果。仅在计算完成时才能检索结果；如果计算尚未完成，则阻塞<code>get</code> 方法。一旦计算完成，就不能再重新开始或取消计算。<code>get</code>方法而获取结果只有在计算完成时获取，否则会一直阻塞直到任务转入完成状态，然后会返回结果或者抛出异常。 只计算一次<code>get</code>方法放到最后</p> 
    </blockquote> </li></ol> </li></ol> 
<h3><a name="t9"></a><a name="t9"></a><a id="9_JUC_479"></a>9. JUC强大的辅助类讲解</h3> 
<ol><li><code>CountDownLatch</code></li></ol> 
<blockquote> 
 <ul><li><code>CountDownLatch</code>主要有两个方法，当一个或多个线程调用<code>await</code>方法时，这些线程会阻塞。</li><li>其它线程调用<code>countDown</code>方法会将计数器减<code>1</code>(调用<code>countDown</code>方法的线程不会阻塞)，</li><li>当计数器的值变为<code>0</code>时，因<code>await</code>方法阻塞的线程会被唤醒，继续执行。</li></ul> 
</blockquote> 
<ol start="2"><li><code>CyclicBarrier</code></li></ol> 
<blockquote> 
 <ul><li><code>CyclicBarrier</code>的字面意思是可循环（Cyclic）使用的屏障（Barrier）。它要做的事情是，</li><li>让一组线程到达一个屏障（也可以叫同步点）时被阻塞</li><li>直到最后一个线程到达屏障时，屏障才会开门，所有</li><li>被屏障拦截的线程才会继续干活。</li><li>线程进入屏障通过CyclicBarrier的<code>await()</code>方法。</li></ul> 
</blockquote> 
<ol start="3"><li><code>Semaphore</code></li></ol> 
<blockquote> 
 <p>在信号量上我们定义两种操作：</p> 
 <ul><li><code>acquire</code>（获取） 当一个线程调用acquire操作时，它要么通过成功获取信号量（信号量减<code>1</code>），</li><li>要么一直等下去，直到有线程释放信号量，或超时。</li><li><code>release</code>（释放）实际上会将信号量的值加<code>1</code>，然后唤醒等待的线程。</li><li>信号量主要用于两个目的，一个是用于多个共享资源的互斥使用，另一个用于并发线程数的控制。</li></ul> 
</blockquote> 
<h3><a name="t10"></a><a name="t10"></a><a id="10_ReentrantReadWriteLock_499"></a>10. ReentrantReadWriteLock读写锁</h3> 
<ol><li>类似案例–缓存</li><li>demo</li></ol> 
<pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">ReadWriteLockDemo</span> <span class="token punctuation">{<!-- --></span> 
        <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>    
            MyCache myCache<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">MyCache</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator">&lt;</span><span class="token number">5</span><span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>     
                <span class="token keyword">int</span> finalI <span class="token operator">=</span> i<span class="token punctuation">;</span>      
                <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token punctuation">{<!-- --></span>     
                myCache<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span>finalI<span class="token operator">+</span><span class="token string">""</span><span class="token punctuation">,</span>finalI<span class="token operator">+</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span>      
                <span class="token punctuation">}</span><span class="token punctuation">,</span>i<span class="token operator">+</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token punctuation">}</span>    
            <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">int</span> i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator">&lt;</span><span class="token number">5</span><span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>     
                <span class="token keyword">int</span> finalI <span class="token operator">=</span> i<span class="token punctuation">;</span>     
                <span class="token keyword">new</span> <span class="token class-name">Thread</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token punctuation">{<!-- --></span>        
                    myCache<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>finalI<span class="token operator">+</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span>     
                <span class="token punctuation">}</span><span class="token punctuation">,</span>i<span class="token operator">+</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
            <span class="token punctuation">}</span>  
        <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token keyword">class</span> <span class="token class-name">MyCache</span><span class="token punctuation">{<!-- --></span> 
    <span class="token keyword">private</span> <span class="token keyword">volatile</span> Map<span class="token generics function"><span class="token punctuation">&lt;</span>String<span class="token punctuation">,</span>String<span class="token punctuation">&gt;</span></span> map<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">HashMap</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
    <span class="token keyword">private</span> ReadWriteLock readWriteLock<span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">ReentrantReadWriteLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">put</span><span class="token punctuation">(</span>String k<span class="token punctuation">,</span>String v<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>  
        readWriteLock<span class="token punctuation">.</span><span class="token function">writeLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token keyword">try</span> <span class="token punctuation">{<!-- --></span>      
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"---------"</span><span class="token operator">+</span><span class="token string">"开始写入"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>      
            map<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span>k<span class="token punctuation">,</span>v<span class="token punctuation">)</span><span class="token punctuation">;</span>      
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"---------"</span><span class="token operator">+</span><span class="token string">"写入完成"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token punctuation">}</span>
        <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>    
        
        <span class="token punctuation">}</span><span class="token keyword">finally</span> <span class="token punctuation">{<!-- --></span>      
            readWriteLock<span class="token punctuation">.</span><span class="token function">writeLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span> 
    <span class="token punctuation">}</span>  
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">get</span><span class="token punctuation">(</span>String k<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>  
        readWriteLock<span class="token punctuation">.</span><span class="token function">readLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">lock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token keyword">try</span> <span class="token punctuation">{<!-- --></span>      
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"---------"</span><span class="token operator">+</span><span class="token string">"开始读取"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>     
            String s <span class="token operator">=</span> map<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>k<span class="token punctuation">)</span><span class="token punctuation">;</span>      
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"---------"</span><span class="token operator">+</span><span class="token string">"读取完成"</span><span class="token operator">+</span>s<span class="token punctuation">)</span><span class="token punctuation">;</span>   
        <span class="token punctuation">}</span><span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span> 
        
        <span class="token punctuation">}</span><span class="token keyword">finally</span> <span class="token punctuation">{<!-- --></span>
        readWriteLock<span class="token punctuation">.</span><span class="token function">readLock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">unlock</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    
        <span class="token punctuation">}</span>  
     <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li></ul></pre> 
<h3><a name="t11"></a><a name="t11"></a><a id="11_551"></a>11.阻塞队列</h3> 
<ol><li>阻塞队列</li></ol> 
<blockquote> 
 <p>阻塞：必须要阻塞/不得不阻塞 阻塞队列是一个队列，在数据结构中起的作用如下图：<br> <code>线程1</code>往阻塞队列里添加元素，<code>线程2</code>从阻塞队列里移除元素<br> 当队列是空的，从队列中获取元素的操作将会被阻塞当队列是满的，从队列中添加元素的操作将会被阻塞<br> 试图从空的队列中获取元素的线程将会被阻塞，直到其他线程往空的队列插入新的元素<br> 试图向已满的队列中添加新元素的线程将会被阻塞，直到其他线程从队列中移除一个或多个元素或者完全清空，使队列变得空闲起来并后续新增</p> 
</blockquote> 
<ol start="2"><li>用处</li></ol> 
<blockquote> 
 <p>在多线程领域：所谓阻塞，在某些情况下会挂起线程（即阻塞），一旦条件满足，被挂起的线程又会自动被唤起为什么需要<code>BlockingQueue</code>好处是我们不需要关心什么时候需要阻塞线程，什么时候需要唤醒线程，因为这一切<code>BlockingQueue</code>都给你一手包办了在<code>concurrent</code>包发布以前，在多线程环境下，我们每个程序员都必须去自己控制这些细节，尤其还要兼顾效率和线程安全，而这会给我们的程序带来不小的复杂度。</p> 
</blockquote> 
<ol start="3"><li>种类分析 
  <ol><li><code>ArrayBlockingQueue</code>：由数组结构组成的有界阻塞队列。</li><li><code>LinkedBlockingQueue</code>：由链表结构组成的有界（但大小默认值为<code>integer.MAX_VALUE</code>）阻塞队列。</li><li><code>PriorityBlockingQueue</code>：支持优先级排序的无界阻塞队列。</li><li><code>DelayQueue</code>：使用优先级队列实现的延迟无界阻塞队列。</li><li><code>SynchronousQueue</code>：不存储元素的阻塞队列，也即单个元素的队列。</li><li><code>LinkedTransferQueue</code>：由链表组成的无界阻塞队列。</li><li><code>LinkedBlockingDeque</code>：由链表组成的双向阻塞队列。</li></ol> </li><li>核心方法</li></ol> 
<blockquote> 
 <ul><li>抛出异常</li></ul> 
 <p>当阻塞队列满时，再往队列里add插入元素会抛<code>IllegalStateException:Queue full</code><br> 当阻塞队列空时，再往队列里remove移除元素会抛<code>NoSuchElementException</code></p> 
 <ul><li>特殊值</li></ul> 
 <p>插入方法，成功<code>ture</code>失败<code>false</code><br> 移除方法，成功返回出队列的元素，队列里没有就返回null</p> 
 <ul><li>一直阻塞<br> 当阻塞队列满时，生产者线程继续往队列里put元素，队列会一直阻塞生产者线程直到put数据or响应中断退出</li></ul> 
 <p>当阻塞队列空时，消费者线程试图从队列里take元素，队列会一直阻塞消费者线程直到队列可用</p> 
 <ul><li>超时退出</li></ul> 
 <p>当阻塞队列满时，队列会阻塞生产者线程一定时间，超过限时后生产者线程会退出</p> 
</blockquote> 
<p><img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20200919215329553.png" alt="在这里插入图片描述"></p> 
<h3><a name="t12"></a><a name="t12"></a><a id="13__595"></a>13. 线程池</h3> 
<ol><li> <p>为什么用线程池</p> 
  <blockquote> 
   <p>例子：10年前单核CPU电脑，假的多线程，像马戏团小丑玩多个球，CPU需要来回切换。现在是多核电脑，多个线程各自跑在独立的CPU上，不用切换效率高。</p> 
   <p>线程池的<strong>优势</strong>：线程池做的工作只要是控制运行的线程数量，处理过程中将任务放入队列，然后在线程创建后启动这些任务，如果线程数量超过了最大数量，超出数量的线程排队等候，等其他线程执行完毕，再从队列中取出任务来执行。</p> 
   <p>它的<strong>主要特点</strong>为：线程复用;控制最大并发数;管理线程。</p> 
   <p>第一：降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的销耗。</p> 
   <p>第二：提高响应速度。当任务到达时，任务可以不需要等待线程创建就能立即执行。</p> 
   <p>第三：提高线程的可管理性。线程是稀缺资源，如果无限制的创建，不仅会销耗系统资源，还会降低系统的稳定性，使用线程池可以进行统一的分配，调优和监控。</p> 
  </blockquote> </li><li> <p>线程池如何使用</p> 
  <ol><li> <p>架构说明</p> 
    <blockquote> 
     <p>Java中的线程池是通过<code>Executor</code>框架实现的，该框架中用到了<code>Executor</code>，<code>Executors</code>，<code>ExecutorService</code>，<code>ThreadPoolExecutor</code>这几个类</p> 
    </blockquote> </li><li> <p>编码实现</p> 
    <ol><li> <p><code>Executors.newFixedThreadPool(int)</code></p> 
      <blockquote> 
       <p>执行长期任务性能好，创建一个线程池，<br> 一池有N个固定的线程，有固定线程数的线程</p> 
      </blockquote> </li><li> <p><code>Executors.newSingleThreadExecutor()</code></p> 
      <blockquote> 
       <p>一个任务一个任务的执行，一池一线程</p> 
      </blockquote> </li><li> <p><code>Executors.newCachedThreadPool()</code></p> 
      <blockquote> 
       <p>执行很多短期异步任务，线程池根据需要创建新线程，<br> 但在先前构建的线程可用时将重用它们。可扩容，遇强则强</p> 
      </blockquote> </li></ol> </li></ol> </li><li> <p>线程池的几个重要参数</p> 
  <ol><li><code>corePoolSize</code>：线程池中的常驻核心线程数</li><li><code>maximumPoolSize</code>：线程池中能够容纳同时执行的最大线程数，此值必须大于等于<code>1</code></li><li><code>keepAliveTime</code>：多余的空闲线程的存活时间当前池中线程数量超过<code>corePoolSize</code>时，当空闲时间达到<code>keepAliveTime</code>时，多余线程会被销毁直到只剩下<code>corePoolSize</code>个线程为止</li><li><code>unit</code>：<code>keepAliveTime</code>的单位</li><li><code>workQueue</code>：任务队列，被提交但尚未被执行的任务</li><li><code>threadFactory</code>：表示生成线程池中工作线程的线程工厂，用于创建线程，一般默认的即可</li><li><code>handler</code>：拒绝策略，表示当队列满了，并且工作线程大于等于线程池的最大线程（<code>maximumPoolSize</code>）时如何来拒绝请求执行的<code>runnable</code>的策略</li></ol> </li><li> <p><strong>线程池的底层工作原理</strong></p> 
  <blockquote> 
   <p>1、在创建了线程池后，开始等待请求。</p> 
   <p>2、当调用<code>execute()</code>方法添加一个请求任务时，线程池会做出如下判断：</p> 
   <p>​ 2.1如果正在运行的线程数量小于<code>corePoolSize</code>，那么马上创建线程运行这个任务；</p> 
   <p>​ 2.2如果正在运行的线程数量大于或等于<code>corePoolSize</code>，那么将这个任务放入队列；</p> 
   <p>​ 2.3如果这个时候队列满了且正在运行的线程数量还小于<code>maximumPoolSize</code>，那么还是要创建非核心 线程立刻运行这个任务；</p> 
   <p>2.4如果队列满了且正在运行的线程数量大于或等于<code>maximumPoolSize</code>，那么线程池会启动饱和拒绝 策略来执行。</p> 
   <p>3、当一个线程完成任务时，它会从队列中取下一个任务来执行。</p> 
   <p>4、当一个线程无事可做超过一定的时间（<code>keepAliveTime</code>）时，线程会判断： 如果当前运行的线程数大于<code>corePoolSize</code>，那么这个线程就被停掉。 所以线程池的所有任务完成后，它最终会收缩到<code>corePoolSize</code>的大小。</p> 
  </blockquote> </li><li> <p>线程池的拒绝策略</p> 
  <ol><li> <p>是什么</p> 
    <blockquote> 
     <p>等待队列已经排满了，再也塞不下新任务了同时，线程池中的max线程也达到了，无法继续为新任务服务。这个是时候我们就需要拒绝策略机制合理的处理这个问题。</p> 
    </blockquote> </li><li> <p>JDK内置的拒绝策略</p> 
    <ol><li><strong>AbortPolicy</strong>(默认)：直接抛出<code>RejectedExecutionException</code>异常阻止系统正常运行</li><li><strong>CallerRunsPolicy</strong>：“调用者运行”一种调节机制，该策略既不会抛弃任务，也不会抛出异常，而是将某些任务回退到调用者，从而降低新任务的流量。</li><li><strong>DiscardOldestPolicy</strong>：抛弃队列中等待最久的任务，然后把当前任务加人队列中尝试再次提交当前任务。</li><li><strong>DiscardPolicy</strong>：该策略默默地丢弃无法处理的任务，不予任何处理也不抛出异常。如果允许任务丢失，这是最好的一种策略</li></ol> 
    <blockquote> 
     <p>以上内置拒绝策略均实现了<code>RejectedExecutionHandle</code>接口</p> 
    </blockquote> </li><li> <p><strong>在工作中单一的/固定数的/可变的三种创建线程池的方法哪个用的多？超级大坑</strong></p> 
    <ol><li> <p>答案是一个都不用，我们工作中只能使用自定义的</p> </li><li> <p><code>Executors</code>中<code>JDK</code>已经给你提供了，为什么不用？</p> 
      <blockquote> 
       <p>由于JDK提供的阻塞队列大小都是 <code>Integer.MAX_VALUE</code> ，会造成<code>OOM</code></p> 
      </blockquote> </li></ol> </li></ol> </li></ol> 
<h3><a name="t13"></a><a name="t13"></a><a id="13_java8___on_java_8_683"></a>13. java8之流式计算 – 详情请看 on java 8</h3> 
<h3><a name="t14"></a><a name="t14"></a><a id="14_685"></a>14.分支合并框架</h3> 
<ol><li> <p>原理</p> 
  <blockquote> 
   <p><code>Fork</code>：把一个复杂任务进行分拆，大事化小</p> 
   <p><code>Join</code>：把分拆任务的结果进行合并</p> 
  </blockquote> </li><li> <p>相关类</p> 
  <ol><li> <p><strong>ForkJoinPool</strong></p> 
    <blockquote> 
     <p>分支合并池 类比 <code>=&gt;</code> 线程池</p> 
    </blockquote> </li><li> <p><strong>ForkJoinTask</strong></p> 
    <blockquote> 
     <p>ForkJoinTask 类比 <code>=&gt;</code> FutureTask</p> 
    </blockquote> </li><li> <p><strong>RecursiveTask</strong></p> 
    <blockquote> 
     <p>递归任务：继承后可以实现递归(自己调自己)调用的任务</p> 
    </blockquote> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"> <span class="token keyword">class</span> <span class="token class-name">Fibonacci</span> <span class="token keyword">extends</span> <span class="token class-name">RecursiveTask</span><span class="token generics function"><span class="token punctuation">&lt;</span>Integer<span class="token punctuation">&gt;</span></span> <span class="token punctuation">{<!-- --></span>  
     <span class="token keyword">final</span> <span class="token keyword">int</span> n<span class="token punctuation">;</span>  
     <span class="token function">Fibonacci</span><span class="token punctuation">(</span><span class="token keyword">int</span> n<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span> <span class="token keyword">this</span><span class="token punctuation">.</span>n <span class="token operator">=</span> n<span class="token punctuation">;</span> <span class="token punctuation">}</span>  
     Integer <span class="token function">compute</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>   
         <span class="token keyword">if</span> <span class="token punctuation">(</span>n <span class="token operator">&lt;=</span> <span class="token number">1</span><span class="token punctuation">)</span>   
             <span class="token keyword">return</span> n<span class="token punctuation">;</span>   
         Fibonacci f1 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Fibonacci</span><span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
         f1<span class="token punctuation">.</span><span class="token function">fork</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
         Fibonacci f2 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Fibonacci</span><span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
         <span class="token keyword">return</span> f2<span class="token punctuation">.</span><span class="token function">compute</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> f1<span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
     <span class="token punctuation">}</span> 
 <span class="token punctuation">}</span>
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li></ul></pre> </li></ol> </li></ol> 
<h3><a name="t15"></a><a name="t15"></a><a id="15__724"></a>15. 异步回调</h3> 
<ol><li> <p>例子：CompletableFutureDemo</p> </li><li> <p>原理</p> 
  <blockquote> 
   <p>同步、异步、异步回调</p> 
  </blockquote> </li><li> <pre class="prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"><span class="token keyword">import</span> java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span>CompletableFuture<span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">CompletableFutureDemo</span> <span class="token punctuation">{<!-- --></span>   
    <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span>String<span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> Exception <span class="token punctuation">{<!-- --></span>       
        <span class="token comment">//同步，异步，异步回调        </span>
        <span class="token comment">//同步</span>
        CompletableFuture<span class="token generics function"><span class="token punctuation">&lt;</span>Void<span class="token punctuation">&gt;</span></span> completableFuture1 <span class="token operator">=</span>
            CompletableFuture<span class="token punctuation">.</span><span class="token function">runAsync</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token punctuation">{<!-- --></span>
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
                               <span class="token operator">+</span><span class="token string">"\t completableFuture1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            completableFuture1<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        
        <span class="token comment">//异步回调        </span>
        CompletableFuture<span class="token generics function"><span class="token punctuation">&lt;</span>Integer<span class="token punctuation">&gt;</span></span> completableFuture2 <span class="token operator">=</span>
            CompletableFuture<span class="token punctuation">.</span><span class="token function">supplyAsync</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token punctuation">{<!-- --></span>           
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>Thread<span class="token punctuation">.</span><span class="token function">currentThread</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">+</span>"\t
                               completableFuture2"<span class="token punctuation">)</span><span class="token punctuation">;</span>           
            <span class="token keyword">int</span> i <span class="token operator">=</span> <span class="token number">10</span><span class="token operator">/</span><span class="token number">0</span><span class="token punctuation">;</span>            
            <span class="token keyword">return</span> <span class="token number">1024</span><span class="token punctuation">;</span>                                                                      <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        
        completableFuture2<span class="token punctuation">.</span><span class="token function">whenComplete</span><span class="token punctuation">(</span><span class="token punctuation">(</span>t<span class="token punctuation">,</span>u<span class="token punctuation">)</span><span class="token operator">-</span><span class="token operator">&gt;</span><span class="token punctuation">{<!-- --></span>           
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"-------t="</span><span class="token operator">+</span>t<span class="token punctuation">)</span><span class="token punctuation">;</span>           
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"-------u="</span><span class="token operator">+</span>u<span class="token punctuation">)</span><span class="token punctuation">;</span>       
        <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">exceptionally</span><span class="token punctuation">(</span>f<span class="token operator">-</span><span class="token operator">&gt;</span><span class="token punctuation">{<!-- --></span>        
            System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"-----exception:"</span><span class="token operator">+</span>f<span class="token punctuation">.</span><span class="token function">getMessage</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>    
            <span class="token keyword">return</span> <span class="token number">444</span><span class="token punctuation">;</span>      
        <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   
    <span class="token punctuation">}</span><span class="token punctuation">}</span> 
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li></ul></pre> </li></ol>
                </div><div data-report-view="{&quot;mod&quot;:&quot;1585297308_001&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/article/details/108686383&quot;,&quot;extend1&quot;:&quot;pc&quot;,&quot;ab&quot;:&quot;new&quot;}"><div></div></div>
                <link href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/markdown_views-10218d227c.css" rel="stylesheet">
                <link href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/style-6aa8c38f9a.css" rel="stylesheet">
        </div>
    </article>
</div>
<script>
    // 敏感词替换
    ~function(blogSensitiveWords){
        if(blogSensitiveWords){   
            var getContentViews = document.getElementById("content_views");
            var getContentTitle = document.getElementById("articleContentId");
            var contentViewsInnerHTML = getContentViews.innerHTML;
            var contentTitleInnerHTML = getContentTitle.innerHTML;
            var keyWordsJsonArr = [];
            var keyWordsArr = blogSensitiveWords.split(',');
            function repeatTimes(str, num){
                return num > 1 ? str += repeatTimes(str, --num): str;
            }
            for(var i = 0; i < keyWordsArr.length; i++){
                var keyWordsJson = {} ;
                keyWordsJson.key = keyWordsArr[i];
                keyWordsJson.value = repeatTimes("*",keyWordsArr[i].length);
                keyWordsJsonArr.push(keyWordsJson);
            }
            var reg;
            for(var i = 0; i < keyWordsJsonArr.length; i++){
                var item = keyWordsJsonArr[i];
                reg = new RegExp(item.key+"(?!([^<]*>)|([^<]*<\/a>))","ig");
                contentViewsInnerHTML = contentViewsInnerHTML.replace(reg,item.value);
                contentTitleInnerHTML = contentTitleInnerHTML.replace(reg,item.value);
            }
            getContentViews.innerHTML=contentViewsInnerHTML;
            getContentTitle.innerHTML=contentTitleInnerHTML;
        }
    }(blogSensitiveWords)
</script>
<div class="more-toolbox more-toolbox-active" id="toolBarBox">
    <span id="fixedBar"></span>
    <div class="left-toolbox" style="position: fixed; left: 412.6px; bottom: 0px; width: 1010px;">
        <ul class="toolbox-list">
            <li class="tool-item tool-item-size tool-active is-like" id="is-like"><a>
            <img style="display:none;" id="is-like-imgactive-animation-like" class="animation-dom active-animation" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarThumbUpactive.png" alt="">
            <img style="display:none" id="is-like-imgactive" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarThumbUpactive.png" alt="">
            <img style="display:block" id="is-like-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarThumbUp.png" alt="">   
            <span class="name" id="is-like-span">点赞</span>
            <span id="spanCount" class="count">
            </span>
            </a></li>
            <li class="tool-item tool-item-size tool-active tool-item-comment">
                <a href="https://blog.csdn.net/noobzzz/article/details/108686383#commentBox">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarComment.png" alt="">
                    <span class="name">评论</span>
                    <span class="count">
                    </span>
                </a>
            </li>
            <li class="tool-item tool-item-size tool-active tool-QRcode" id="tool-share">
                <a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;1582594662_002&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4129&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarShare.png" alt="">
                    <span class="name">分享</span>
                </a>
                <div class="QRcode" id="tool-QRcode" style="left:-92%;">
                    <span id="QRcode-close">x</span>
                    <p class="title">
                    海报分享
                    </p>
                    <div id="shareCode" title="https://blog.csdn.net/noobzzz/article/shareArticleCardPage?article_id=108686383&amp;utm_source=po_popup"><canvas width="144" height="144" style="display: none;"></canvas><img style="display: block;" src=""></div>
                    <p>
                    扫一扫，分享海报
                    </p>
                </div>
            </li>
            <li class="tool-item tool-item-size tool-active is-collection ">
                <a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4130&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img style="display:none" id="is-collection-img-collection" class="animation-dom active-animation" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarCollectionActive.png" alt="">
                    <img id="is-collection-img" style="display:block" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarCollect.png" alt="">
                    <img id="is-collection-imgactive" style="display:none" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarCollectionActive.png" alt="">
                    <span class="name" id="is-collection">收藏</span>
                    <span class="count get-collection" id="get-collection">
                        1
                    </span>
                </a>
            </li>
            <li class="tool-item tool-item-size tool-active tool-reward">
                <a id="toolreward" data-report-click="{&quot;mod&quot;:&quot;popu_830&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4237&quot;,&quot;dest&quot;:&quot;&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarReward.png" alt="">
                    <span class="name">打赏</span>
                </a>
<div id="reward" class="reward-box">
	<p class="rewad-title">打赏<span class="reward-close"><svg t="1567152543821" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10924" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12"><defs><style type="text/css"></style></defs><path d="M512 438.378667L806.506667 143.893333a52.032 52.032 0 1 1 73.6 73.621334L585.621333 512l294.485334 294.485333a52.074667 52.074667 0 0 1-73.6 73.642667L512 585.621333 217.514667 880.128a52.053333 52.053333 0 1 1-73.621334-73.642667L438.378667 512 143.893333 217.514667a52.053333 52.053333 0 1 1 73.621334-73.621334L512 438.378667z" fill="" p-id="10925"></path></svg></span></p>
	<dl>
		<dd>
		<a href="https://blog.csdn.net/noobzzz" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz&quot;,&quot;ab&quot;:&quot;new&quot;}">
			<img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/3_noobzzz" class="avatar_pic" username="noobzzz">
		</a>
		</dd>
		<dt>
			<p class="blog-name">noobzzz</p>
			<p class="blog-discript">你的鼓励将是我创作的最大动力</p>
		</dt>
	</dl>
	<div class="change-bt-box">
		<span class="reward-bt reward-bt-coin">C币</span>
		<span class="reward-bt-space"></span>
		<span class="reward-bt reward-bt-money reward-bt-active">余额</span>
	</div>
	<div class="money-box">
			<span class="choose_money choosed" data-id="2">¥2</span>
			<span class="choose_money " data-id="4">¥4</span>
			<span class="choose_money " data-id="6">¥6</span>
			<span class="choose_money " data-id="10">¥10</span>
			<span class="choose_money " data-id="20">¥20</span>
			<span class="choose_money " data-id="50">¥50</span>
	</div>
	<div class="sure-box">
		<p class="is-have-money"><span class="tip">您的余额不足，请先充值哦～</span><a class="bt-go" data-report-click="{&quot;mod&quot;:&quot;1597646289_003&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4302&quot;}" target="_blank" href="https://i.csdn.net/#/wallet/balance/recharge" data-report-query="utm_source=RewardVip">去充值</a></p>
	</div>
</div>
            </li>
            <li class="tool-item tool-item-size tool-active tool-more">
              <a class="article-report">
                <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tobarReport.png" alt=""><span class="name">举报</span>
              </a>
            </li>
            <li class="tool-item">
                    <a class="tool-attend tool-bt-button tool-bt-attend" href="javascript:;">关注</a>
                <a class="tool-item-follow active-animation" style="display:none;">关注</a>
            </li>
            <li class="tool-item">
                    <p class="company active" id="health-companies" href="javascript:;">一键三连</p>
                <span class="triplet-prompt" style="display: inline;">点赞Mark关注该博主, 随时了解TA的最新博文<img class="close-prompt" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/closePrompt.png"></span>
            </li>
        </ul>
        <div style="display:flex">
         </div>
    </div>  
</div>
<script type="text/javascript" crossorigin="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/qrcode-7c90a92189.min.js.下载"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(5)" type="text/javascript"></script>
<script type="text/javascript" crossorigin="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/collection-box.js.下载"></script>
                <div class="first-recommend-box recommend-box">
<div class="recommend-item-box type_other clearfix" data-url="https://www.edrawsoft.cn/edrawmax/ad.html?channel=csdn&amp;hmsr=ew&amp;hmpl=&amp;hmcu=&amp;hmkw=&amp;hmci=" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_871&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant_t0.443611\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;32_443611_RCMD&quot;,&quot;dest&quot;:&quot;https://www.edrawsoft.cn/edrawmax/ad.html?channel=csdn&amp;hmsr=ew&amp;hmpl=&amp;hmcu=&amp;hmkw=&amp;hmci=&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://www.edrawsoft.cn/edrawmax/ad.html?channel=csdn&amp;hmsr=ew&amp;hmpl=&amp;hmcu=&amp;hmkw=&amp;hmci=" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_871&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant_t0.443611\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;32_443611_RCMD&quot;,&quot;dest&quot;:&quot;https://www.edrawsoft.cn/edrawmax/ad.html?channel=csdn&amp;hmsr=ew&amp;hmpl=&amp;hmcu=&amp;hmkw=&amp;hmci=&quot;}" data-report-query="utm_medium=distribute.pc_relevant_t0.443611&amp;depth_1-utm_source=distribute.pc_relevant_t0.443611">
					支持260余种<em>图</em>形<em>图</em>表的设计软件---亿<em>图</em><em>图</em>示
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block">09-28</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://www.edrawsoft.cn/edrawmax/ad.html?channel=csdn&amp;hmsr=ew&amp;hmpl=&amp;hmcu=&amp;hmkw=&amp;hmci=" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_871&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant_t0.443611\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;32_443611_RCMD&quot;,&quot;dest&quot;:&quot;https://www.edrawsoft.cn/edrawmax/ad.html?channel=csdn&amp;hmsr=ew&amp;hmpl=&amp;hmcu=&amp;hmkw=&amp;hmci=&quot;}" data-report-query="utm_medium=distribute.pc_relevant_t0.443611&amp;depth_1-utm_source=distribute.pc_relevant_t0.443611">
				<div class="desc ellipsis-online ellipsis-online-1">专业创意绘<em>图</em>软件，跨平台云存储，内置丰富模板。轻松绘制流程<em>图</em>、UML、ER<em>图</em>、拓扑<em>图</em>、架构<em>图</em>等260种<em>图</em>型。</div>
			</a>
		</div>
	</div>
</div>
                </div>
            <div class="second-recommend-box recommend-box">
<div class="recommend-item-box type_download clearfix" data-url="https://download.csdn.net/download/lp20171401131/12666120" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/lp20171401131/12666120&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://download.csdn.net/download/lp20171401131/12666120" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/lp20171401131/12666120&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control">
					个人学习<em>JUC</em>代码<em>笔记</em>总集
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block">07-27</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://download.csdn.net/download/lp20171401131/12666120" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/lp20171401131/12666120&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-1.control">
				<div class="desc ellipsis-online ellipsis-online-1">个人学习的时候对<em>JUC</em>做的<em>笔记</em>，包括所有代码，学习视频是<em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>的<em>JUC</em>，需要有一定的基础才能看懂，这是个人<em>笔记</em>，不一定适用于所有人，谢谢！</div>
			</a>
		</div>
	</div>
</div>
            </div>
<a id="commentBox" name="commentBox"></a>
<div class="comment-box">
	<div class="comment-edit-box d-flex">
		<a id="commentsedit"></a>
		<div class="user-img">
			<a href="javascript:void(0);">
				<img class="show_loginbox" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/anonymous-User-img.png">
			</a>
		</div>
		<form id="commentform">
			<img class="comment-sofa-flag" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/commentFlag@2x.png" style="display: inline;">
			<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="优质评论可以帮助作者获得更高权重" maxlength="1000"></textarea>
			<div class="opt-box">
				<div id="ubbtools" class="add_code">
					<a href="https://blog.csdn.net/noobzzz/article/details/108686383#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
				</div>
				<input type="hidden" id="comment_replyId" name="comment_replyId">
				<input type="hidden" id="article_id" name="article_id" value="108686383">
				<input type="hidden" id="comment_userId" name="comment_userId" value="">
				<input type="hidden" id="commentId" name="commentId" value="">
				<div class="dropdown" id="myDrap">
					<a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
						<div class="txt-selected text-truncate">添加代码片</div>
						<svg class="icon d-block" width="200px" height="100.00px" viewBox="0 0 2048 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M597.33333292 298.666667h853.333334L1023.99999992 725.333333 597.33333292 298.666667z"></path></svg>
					</a>
					<ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
						<li><a data-code="html">HTML/XML</a></li>
						<li><a data-code="objc">objective-c</a></li>
						<li><a data-code="ruby">Ruby</a></li>
						<li><a data-code="php">PHP</a></li>
						<li><a data-code="csharp">C</a></li>
						<li><a data-code="cpp">C++</a></li>
						<li><a data-code="javascript">JavaScript</a></li>
						<li><a data-code="python">Python</a></li>
						<li><a data-code="java">Java</a></li>
						<li><a data-code="css">CSS</a></li>
						<li><a data-code="sql">SQL</a></li>
						<li><a data-code="plain">其它</a></li>
					</ul>
				</div>
				<div class="right-box" id="rightBox" data-type="2">
							<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
							<a data-report-click="{&quot;spm&quot;:&quot;3001.4374&quot;}" class="btn btn-sm btn-quick-comment" id="quickComment">“速评一下”</a>
							<a data-report-click="{&quot;mod&quot;:&quot;1582594662_003&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4227&quot;,&quot;ab&quot;:&quot;new&quot;}"><input type="submit" class="btn btn-sm btn-comment" value="发表评论"></a>
				</div>
			</div>
		</form>
		<input type="button" class="bt-comment-show" value="评论">
	</div>
	<div class="comment-list-container">
		<a id="comments"></a>
		<div class="comment-list-box">
		</div>
		<div id="commentPage" class="pagination-box d-none"></div>
		<div class="opt-box text-center">
			<div class="btn btn-sm btn-link-blue" id="btnMoreComment"></div>
		</div>
	</div>
</div>            <div class="recommend-box insert-baidu-box">
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/qq_35170213/article/details/86592200" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control\&quot;}&quot;,&quot;index&quot;:&quot;2&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_35170213/article/details/86592200&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/qq_35170213/article/details/86592200" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control\&quot;}&quot;,&quot;index&quot;:&quot;2&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_35170213/article/details/86592200&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control">
					<em>尚硅谷</em><em>周</em><em>阳</em>Docker<em>思维</em><em>导</em><em>图</em>(官方完整版)
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/qq_35170213" target="_blank"><span class="blog-title">无需有太多~</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">01-22</span>
					<span class="info-block read"><img class="read-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/readCountWhite.png" alt="">
					8601
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/qq_35170213/article/details/86592200" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control\&quot;}&quot;,&quot;index&quot;:&quot;2&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_35170213/article/details/86592200&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control">
				<div class="desc ellipsis-online ellipsis-online-1">找了很久，只找到一个网页版的。但是很完整！
下载地址：https://pan.baidu.com/s/1FLcOpjpJTJlP36lzD-kfWA


</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/weixin_38943691/article/details/107523070" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control\&quot;}&quot;,&quot;index&quot;:&quot;3&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_38943691/article/details/107523070&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/weixin_38943691/article/details/107523070" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control\&quot;}&quot;,&quot;index&quot;:&quot;3&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_38943691/article/details/107523070&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control">
					<em>周</em><em>阳</em>面试<em>JUC</em>和JVM
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/weixin_38943691" target="_blank"><span class="blog-title">weixin_38943691的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">07-28</span>
					<span class="info-block read"><img class="read-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/readCountWhite.png" alt="">
					101
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/weixin_38943691/article/details/107523070" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control\&quot;}&quot;,&quot;index&quot;:&quot;3&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_38943691/article/details/107523070&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control">
				<div class="desc ellipsis-online ellipsis-online-1">我叫目录1.<em>JUC</em>(java.util.concurrent)1.1进程/线程1.2并发/并行1.3 三个包2.售票多线程3.lambda表达式简单复习4.集合类不安全5.八锁原理讲解6生产者消费者7.condition例子8.callabe9.JVM9.1JVM架构<em>图</em>9.2类加载器9.2.1加载器类型9.2.2双亲委派机制9.3本地方法9.4PC寄存器9.5方法区9.6java栈9.6.1栈内存栈+堆+方法区的交互关系9.7堆9.8对象的生命<em>周</em>期9.9堆参数调优入门9.10GC是什么（分代收集算法）9.1</div>
			</a>
		</div>
	</div>
</div><div class="recommend-item-box baiduSearch clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-2\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_34107955/article/details/92306401&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;2&quot;}" data-flg="true">	                <div class="content-box">		                <div class="content-blog display-flex">			                  <div class="title-box">				                  <a href="https://blog.csdn.net/weixin_34107955/article/details/92306401" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-2\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_34107955/article/details/92306401&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;2&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-2&amp;spm=1001.2101.3001.4242">					                <div class="tit ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em>docker核心基础视频<em>思维</em><em>导</em><em>图</em>_weixin_3410795..._CSDN博客</div>				                  </a>			                  </div>                    <div class="info-box display-flex">                      <div class="info display-flex">                        <span class="info-block">11-6</span>                      </div>                    </div>                  </div>                  <div class="desc-box">                    <a href="https://blog.csdn.net/weixin_34107955/article/details/92306401" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-2\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_34107955/article/details/92306401&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;2&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-2&amp;spm=1001.2101.3001.4242">                      <div class="desc ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em>docker核心基础视频<em>思维</em><em>导</em><em>图</em> 2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; 花了三天时间<em>整理</em>出来的 https://download.csdn.net/download/gump_nicole/...</div>                    </a>                  </div>                </div>              </div><div class="recommend-item-box baiduSearch clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-3\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_42107430/article/details/104788858&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;3&quot;}" data-flg="true">	                <div class="content-box">		                <div class="content-blog display-flex">			                  <div class="title-box">				                  <a href="https://blog.csdn.net/qq_42107430/article/details/104788858" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-3\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_42107430/article/details/104788858&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;3&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-3&amp;spm=1001.2101.3001.4242">					                <div class="tit ellipsis-online ellipsis-online-1"><em>尚硅谷</em>2020<em>周</em><em>阳</em><em>老师</em>SpringCloud学习<em>整理</em><em>笔记</em>第二部分..._CSDN博客</div>				                  </a>			                  </div>                    <div class="info-box display-flex">                      <div class="info display-flex">                        <span class="info-block">11-7</span>                      </div>                    </div>                  </div>                  <div class="desc-box">                    <a href="https://blog.csdn.net/qq_42107430/article/details/104788858" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-3\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_42107430/article/details/104788858&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;3&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-3&amp;spm=1001.2101.3001.4242">                      <div class="desc ellipsis-online ellipsis-online-1">第一部分:<em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>SpringCloud学习<em>整理</em><em>笔记</em>第一部分 经过5天的学习,目前学到了P92,刚刚结束了SpringCloud Stream,由于还有一些别的事情所以进度有点慢,<em>笔记</em>也...</div>                    </a>                  </div>                </div>              </div>
<div class="recommend-item-box type_discussion_topic clearfix" data-url="https://bbs.csdn.net/topics/392410785" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control\&quot;}&quot;,&quot;index&quot;:&quot;4&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://bbs.csdn.net/topics/392410785&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://bbs.csdn.net/topics/392410785" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control\&quot;}&quot;,&quot;index&quot;:&quot;4&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://bbs.csdn.net/topics/392410785&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control">
					<em>尚硅谷</em><em>周</em><em>阳</em>SpringCloud第一季<em>笔记</em>下载
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block">07-06</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://bbs.csdn.net/topics/392410785" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control\&quot;}&quot;,&quot;index&quot;:&quot;4&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://bbs.csdn.net/topics/392410785&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-discussion_topic-BlogCommendFromBaidu-4.control">
				<div class="desc ellipsis-online ellipsis-online-1"><em>尚硅谷</em>发布的<em>周</em><em>阳</em><em>老师</em>讲授的SpringCloud，讲的非常好，深入简出了解SpringCloud第一季核心技术，这个是本人在学习时亲手<em>整理</em>的<em>笔记</em>，希望对大家有帮助。 相关下载链接：//download</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/qq_35170213/article/details/83504943" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control\&quot;}&quot;,&quot;index&quot;:&quot;5&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_35170213/article/details/83504943&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/qq_35170213/article/details/83504943" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control\&quot;}&quot;,&quot;index&quot;:&quot;5&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_35170213/article/details/83504943&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control">
					<em>尚硅谷</em><em>周</em><em>阳</em>SpringCloud第一季<em>思维</em><em>导</em><em>图</em>(官方完整版)
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/qq_35170213" target="_blank"><span class="blog-title">无需有太多~</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">10-29</span>
					<span class="info-block read"><img class="read-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/readCountWhite.png" alt="">
					9461
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/qq_35170213/article/details/83504943" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control\&quot;}&quot;,&quot;index&quot;:&quot;5&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_35170213/article/details/83504943&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control">
				<div class="desc ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em>SpringCloud第一季<em>思维</em><em>导</em><em>图</em>(官方超级完整版)
下载地址：https://pan.baidu.com/s/1efCoDSqymUqIQmY4nUvrgw

</div>
			</a>
		</div>
	</div>
</div><div class="recommend-item-box baiduSearch clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-6\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/geekerstar/article/details/94976855&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;6&quot;}" data-flg="true">	                <div class="content-box">		                <div class="content-blog display-flex">			                  <div class="title-box">				                  <a href="https://blog.csdn.net/geekerstar/article/details/94976855" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-6\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/geekerstar/article/details/94976855&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;6&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-6&amp;spm=1001.2101.3001.4242">					                <div class="tit ellipsis-online ellipsis-online-1"><em>尚硅谷</em>_2019互联网大厂高频重点面试题(第二季)<em>思维</em><em>导</em><em>图</em>脑<em>图</em><em>笔记</em>...</div>				                  </a>			                  </div>                    <div class="info-box display-flex">                      <div class="info display-flex">                        <span class="info-block">11-17</span>                      </div>                    </div>                  </div>                  <div class="desc-box">                    <a href="https://blog.csdn.net/geekerstar/article/details/94976855" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-6\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/geekerstar/article/details/94976855&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;6&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-6&amp;spm=1001.2101.3001.4242">                      <div class="desc ellipsis-online ellipsis-online-1"><em>尚硅谷</em>_互联网大厂高频重点面试题第2季<em>思维</em><em>导</em><em>图</em><em>笔记</em>下载,git部分未记录(<em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>的视频脑<em>图</em>) ,内容包括<em>JUC</em>多线程并发、JVM和GC等目前大厂笔试中会考、面试...</div>                    </a>                  </div>                </div>              </div><div class="recommend-item-box baiduSearch clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-7\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_41722928/article/details/103732862&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;7&quot;}" data-flg="true">	                <div class="content-box">		                <div class="content-blog display-flex">			                  <div class="title-box">				                  <a href="https://blog.csdn.net/weixin_41722928/article/details/103732862" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-7\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_41722928/article/details/103732862&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;7&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-7&amp;spm=1001.2101.3001.4242">					                <div class="tit ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>-redis脑<em>图</em>课件_小屁孩大帅-杨一凡的博客-CSDN博客</div>				                  </a>			                  </div>                    <div class="info-box display-flex">                      <div class="info display-flex">                        <span class="info-block">10-29</span>                      </div>                    </div>                  </div>                  <div class="desc-box">                    <a href="https://blog.csdn.net/weixin_41722928/article/details/103732862" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-7\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_41722928/article/details/103732862&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;7&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-7&amp;spm=1001.2101.3001.4242">                      <div class="desc ellipsis-online ellipsis-online-1">mindmanager http://106.15.178.250:8082/naotu/Redis.html 支持便签附件阅读 顺便附上 <em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>docker资料脑<em>图</em>: http://106.15.178.250:8082/naotu/Doc...</div>                    </a>                  </div>                </div>              </div>
<div class="recommend-item-box type_download clearfix" data-url="https://download.csdn.net/download/baiwuzhilian2008/11275945" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control\&quot;}&quot;,&quot;index&quot;:&quot;6&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/baiwuzhilian2008/11275945&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://download.csdn.net/download/baiwuzhilian2008/11275945" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control\&quot;}&quot;,&quot;index&quot;:&quot;6&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/baiwuzhilian2008/11275945&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control">
					<em>尚硅谷</em><em>周</em><em>阳</em>Mysql高级<em>思维</em><em>导</em><em>图</em>脑<em>图</em>学习<em>笔记</em>.rar
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block">07-04</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://download.csdn.net/download/baiwuzhilian2008/11275945" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control\&quot;}&quot;,&quot;index&quot;:&quot;6&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/baiwuzhilian2008/11275945&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-6.control">
				<div class="desc ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em>Mysql高级<em>思维</em><em>导</em><em>图</em>脑<em>图</em>，非pdf版，完完整整的.mmap版本，不缺少任何的东西。提供完整pdf文件</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/weixin_30826095/article/details/102125272" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control\&quot;}&quot;,&quot;index&quot;:&quot;7&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_30826095/article/details/102125272&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/weixin_30826095/article/details/102125272" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control\&quot;}&quot;,&quot;index&quot;:&quot;7&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_30826095/article/details/102125272&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control">
					<em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>-redis脑<em>图</em>课件
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/weixin_30826095" target="_blank"><span class="blog-title">weixin_30826095的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">08-14</span>
					<span class="info-block read"><img class="read-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/readCountWhite.png" alt="">
					1920
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/weixin_30826095/article/details/102125272" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control\&quot;}&quot;,&quot;index&quot;:&quot;7&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_30826095/article/details/102125272&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control">
				<div class="desc ellipsis-online ellipsis-online-1">因为脑<em>图</em>原件是.mmap格式，使用wps和xmind打开都会有格式不兼容的问题，这里我们可以使用mindmanager试用版存为html5交互式格式，
提供在线阅读。因为阿里云学生服务器带宽有限，这里打开加载mindmanager插件速度可能有点慢，别着急……
ps : 推荐去github访问，稍微快点。
http://106.15.178.250:8082/naotu/...</div>
			</a>
		</div>
	</div>
</div><div class="recommend-item-box baiduSearch clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-10\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_44871934/article/details/106113342&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;10&quot;}" data-flg="true">	                <div class="content-box">		                <div class="content-blog display-flex">			                  <div class="title-box">				                  <a href="https://blog.csdn.net/weixin_44871934/article/details/106113342" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-10\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_44871934/article/details/106113342&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;10&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-10&amp;spm=1001.2101.3001.4242">					                <div class="tit ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>2020最新版springcloud微服务学习<em>笔记</em>..._CSDN博客</div>				                  </a>			                  </div>                    <div class="info-box display-flex">                      <div class="info display-flex">                        <span class="info-block">11-3</span>                      </div>                    </div>                  </div>                  <div class="desc-box">                    <a href="https://blog.csdn.net/weixin_44871934/article/details/106113342" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-10\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_44871934/article/details/106113342&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;10&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-10&amp;spm=1001.2101.3001.4242">                      <div class="desc ellipsis-online ellipsis-online-1">根据学习<em>尚硅谷</em>的<em>周</em><em>阳</em><em>老师</em>的2020最新版springcloud视频做的<em>笔记</em>springcloud微服务学习<em>笔记</em>(一):Boot和cloud版本选型springcloud微服务学习<em>笔记</em>(二):父工程创建spring...</div>                    </a>                  </div>                </div>              </div><div class="recommend-item-box baiduSearch clearfix" data-report-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-11\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_42390825/article/details/82016440?utm_source=blogxgwz7&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;11&quot;}" data-flg="true">	                <div class="content-box">		                <div class="content-blog display-flex">			                  <div class="title-box">				                  <a href="https://blog.csdn.net/weixin_42390825/article/details/82016440?utm_source=blogxgwz7" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-11\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_42390825/article/details/82016440?utm_source=blogxgwz7&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;11&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-11&amp;spm=1001.2101.3001.4242">					                <div class="tit ellipsis-online ellipsis-online-1">2018<em>尚硅谷</em><em>周</em><em>阳</em>SpringCloud<em>思维</em>脑<em>图</em> - 康菜菜菜鸟之路 - CSDN博客</div>				                  </a>			                  </div>                    <div class="info-box display-flex">                      <div class="info display-flex">                        <span class="info-block">11-3</span>                      </div>                    </div>                  </div>                  <div class="desc-box">                    <a href="https://blog.csdn.net/weixin_42390825/article/details/82016440?utm_source=blogxgwz7" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-title-11\&quot;}&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4242&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_42390825/article/details/82016440?utm_source=blogxgwz7&quot;,&quot;strategy&quot;:&quot;searchFromBaidu1&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;index&quot;:&quot;11&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-title-11&amp;spm=1001.2101.3001.4242">                      <div class="desc ellipsis-online ellipsis-online-1"><em>尚硅谷</em><em>周</em><em>阳</em>SpringCloud第一季<em>笔记</em>脑<em>图</em>  08-22  <em>尚硅谷</em><em>周</em><em>阳</em>2018springcloud原版<em>思维</em>脑<em>图</em> mmap 格式,是<em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>的教学脑<em>图</em>。很多人想要SpringCloud的脑<em>图</em>,但是部...</div>                    </a>                  </div>                </div>              </div>
<div class="recommend-item-box type_blog clearfix" data-url="https://blog.csdn.net/weixin_43431766/article/details/107151265" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control\&quot;}&quot;,&quot;index&quot;:&quot;8&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_43431766/article/details/107151265&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://blog.csdn.net/weixin_43431766/article/details/107151265" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control\&quot;}&quot;,&quot;index&quot;:&quot;8&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_43431766/article/details/107151265&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control">
					【Java面试经验】<em>JUC</em>部分（对应<em>周</em><em>阳</em><em>老师</em>的面试教程）
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info">
					<a href="https://blog.csdn.net/weixin_43431766" target="_blank"><span class="blog-title">zw沐知的博客</span></a>
				</div>
				<div class="info display-flex">
					<span class="info-block time">07-06</span>
					<span class="info-block read"><img class="read-img" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/readCountWhite.png" alt="">
					492
					</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://blog.csdn.net/weixin_43431766/article/details/107151265" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control\&quot;}&quot;,&quot;index&quot;:&quot;8&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_43431766/article/details/107151265&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8.control">
				<div class="desc ellipsis-online ellipsis-online-1">写在最前：此篇文章对应<em>周</em><em>阳</em><em>老师</em>的大厂面试教程，几乎包含了大厂所有<em>JUC</em>部分的面试题，虽然自己无缘大厂，但是这些知识也让我在面试中得到了不错的评价。需要找工作的同学可以搭配另一篇文章来使用
<em>JUC</em>
java.util.concurrent的缩写
线程的6种状态
创建，可运行，阻塞，等待，计时等待，终结
Lambda表达式
java1.8之后允许接口中有部分方法的实现，需要用default关键字描述方法
@FunctionalInterface 注解表示函数式接口（仅有一个抽象方法）
常见异常总结
Concur</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_other clearfix" data-url="https://plugin.csdn.net/" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.453374.control\&quot;}&quot;,&quot;index&quot;:&quot;9&quot;,&quot;strategy&quot;:&quot;11_453374_RCMD&quot;,&quot;dest&quot;:&quot;https://plugin.csdn.net/&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://plugin.csdn.net/" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.453374.control\&quot;}&quot;,&quot;index&quot;:&quot;9&quot;,&quot;strategy&quot;:&quot;11_453374_RCMD&quot;,&quot;dest&quot;:&quot;https://plugin.csdn.net/&quot;}" data-report-query="utm_medium=distribute.pc_relevant.453374.control&amp;depth_1-utm_source=distribute.pc_relevant.453374.control">
					CSDN开发助手，集成开发者常用工具，提升开发效率
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block"></span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://plugin.csdn.net/" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.453374.control\&quot;}&quot;,&quot;index&quot;:&quot;9&quot;,&quot;strategy&quot;:&quot;11_453374_RCMD&quot;,&quot;dest&quot;:&quot;https://plugin.csdn.net/&quot;}" data-report-query="utm_medium=distribute.pc_relevant.453374.control&amp;depth_1-utm_source=distribute.pc_relevant.453374.control">
				<div class="desc ellipsis-online ellipsis-online-1">支持本地书签、tab页、历史记录搜索； 集成CSDN搜索结果； 他是一个时间转换工具； 他是一个计算器； 他是。。。，更多功能正在添加中</div>
			</a>
		</div>
	</div>
</div>
<div class="recommend-item-box type_download clearfix" data-url="https://download.csdn.net/download/qq_38342614/10930073" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control\&quot;}&quot;,&quot;index&quot;:&quot;10&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_38342614/10930073&quot;}">
	<div class="content-box">
		<div class="content-blog display-flex">
			<div class="title-box">
				<a href="https://download.csdn.net/download/qq_38342614/10930073" class="tit ellipsis-online ellipsis-online-1" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control\&quot;}&quot;,&quot;index&quot;:&quot;10&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_38342614/10930073&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control">
					<em>尚硅谷</em><em>周</em><em>阳</em><em>老师</em>Linux附脑<em>图</em>mmap
				</a>
			</div>
			<div class="info-box display-flex">
				<div class="info display-flex">
					<span class="info-block">01-21</span>
				</div>
			</div>
		</div>
		<div class="desc-box">
			<a href="https://download.csdn.net/download/qq_38342614/10930073" target="_blank" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_387&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control\&quot;}&quot;,&quot;index&quot;:&quot;10&quot;,&quot;strategy&quot;:&quot;BlogCommendFromBaidu&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_38342614/10930073&quot;}" data-report-query="utm_medium=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control&amp;depth_1-utm_source=distribute.pc_relevant.none-task-download-BlogCommendFromBaidu-10.control">
				<div class="desc ellipsis-online ellipsis-online-1">很好的教学资源</div>
			</a>
		</div>
	</div>
</div>
            </div>
            <div class="template-box">
                <span>©️2020 CSDN</span>
                <span>皮肤主题: 大白</span>
                <span> 设计师:CSDN官方博客</span>
                <span>
                    <a href="https://blog.csdn.net/" class="back-home c-blue c-blue-hover c-blue-focus">返回首页</a>
                </span>
            </div>
<div class="blog-footer-bottom" style="margin-top:10px;">
        <div id="copyright-box" class="">
          <div id="csdn-copyright-footer" class="column small">
            <ul class="footer-column-t">
            <li>
              <a href="https://www.csdn.net/company/index.html#about" target="_blank">关于我们</a>
            </li>
            <li>
              <a href="https://www.csdn.net/company/index.html#recruit" target="_blank">招贤纳士</a>
            </li>
            <li>
              <a href="https://www.csdn.net/company/index.html#advertisement" target="_blank">广告服务</a>
            </li>
            <li>
              <a href="https://plugin.csdn.net/" target="_blank">开发助手</a>
            </li>
            <li>
              <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/tel.png" alt="">
              <span>400-660-0108</span>
            </li>
            <li>
              <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/email.png" alt="">
              <a href="mailto:webmaster@csdn.net" target="_blank">kefu@csdn.net</a>
            </li>
            <li>
              <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/cs.png" alt="">
              <a href="https://csdn.s2.udesk.cn/im_client/?web_plugin_id=29181" target="_blank">在线客服</a>
            </li>
            <li>
              工作时间&nbsp;8:30-22:00
            </li>
          </ul>
            <ul class="footer-column-b">
            <li><img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/badge.png" alt=""><a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010502030143" rel="noreferrer" target="_blank">公安备案号11010502030143</a></li>
            <li><a href="http://beian.miit.gov.cn/publish/query/indexFirst.action" rel="noreferrer" target="_blank">京ICP备19004658号</a></li>
            <li><a href="https://csdnimg.cn/release/live_fe/culture_license.png" rel="noreferrer" target="_blank">京网文〔2020〕1039-165号</a></li>
            <li><a href="https://csdnimg.cn/cdn/content-toolbar/csdn-ICP.png" target="_blank">经营性网站备案信息</a></li>
            <li><a href="http://www.bjjubao.org/" target="_blank">北京互联网违法和不良信息举报中心</a></li>
            <li><a href="http://www.cyberpolice.cn/" target="_blank">网络110报警服务</a></li>
            <li><a href="http://www.12377.cn/" target="_blank">中国互联网举报中心</a></li>
            <li><a href="https://download.csdn.net/index.php/tutelage/" target="_blank">家长监护</a></li>
            <li><a href="https://chrome.google.com/webstore/detail/csdn%E5%BC%80%E5%8F%91%E8%80%85%E5%8A%A9%E6%89%8B/kfkdboecolemdjodhmhmcibjocfopejo?hl=zh-CN" target="_blank">Chrome商店下载</a></li>
            <li>©1999-2020北京创新乐知网络技术有限公司</li>
            <li><a href="https://www.csdn.net/company/index.html#statement" target="_blank">版权与免责声明</a></li>
            <li><a href="https://blog.csdn.net/blogdevteam/article/details/90369522" target="_blank">版权申诉</a></li>
          </ul>
          </div>
        </div>
      </div>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/csdn-footer.js.下载" data-isfootertrack="false" type="text/javascript"></script>
<script type="text/javascript">
    window.csdn.csdnFooter.options = {
        el: '.blog-footer-bottom',
        type: 2
    }
</script>        </main>
<aside class="blog_container_aside" style="position: fixed; bottom: 0px; z-index: 99; left: 104.6px; width: 300px; top: auto;">
    <div id="asideProfile" class="aside-box">
    <div class="profile-intro d-flex">
        <div class="avatar-box d-flex justify-content-center flex-column">
            <a href="https://blog.csdn.net/noobzzz" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4121&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz&quot;,&quot;ab&quot;:&quot;new&quot;}">
                <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/3_noobzzz" class="avatar_pic" username="noobzzz">
            </a>
        </div>
        <div class="user-info d-flex flex-column profile-intro-name-box">
            <div class="profile-intro-name-boxTop">
                <a href="https://blog.csdn.net/noobzzz" class="" id="uid" title="noobzzz" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4122&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <span class="name " username="noobzzz">noobzzz</span>
                </a>
                <span>
                </span>
                <span class="flag expert-blog">
                <span class="bubble">CSDN认证博客专家</span>
                </span>
                <span class="flag company-blog">
                <span class="bubble">CSDN认证企业博客</span>
                </span>
            </div>
            <div class="profile-intro-name-boxFooter">
                <span class="personal-home-page personal-home-years">码龄3年</span>
                    <span class="personal-home-page">
                    <a class="personal-home-certification" href="https://me.csdn.net/noobzzz?utm_source=14998968" target="_blank" title="暂无认证">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/nocErtification.png" alt="">
                    暂无认证
                    </a>
                    </span>
            </div>
        </div>
    </div>
    <div class="data-info d-flex item-tiling">
        <dl class="text-center" title="19">
            <a href="https://blog.csdn.net/noobzzz" data-report-click="{&quot;mod&quot;:&quot;1598321000_001&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4310&quot;}" data-report-query="t=1">  
                <dt><span class="count">19</span></dt>
                <dd class="font">原创</dd>
            </a>
        </dl>
        <dl class="text-center" data-report-click="{&quot;mod&quot;:&quot;1598321000_002&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4311&quot;}" title="133862">
            <a href="https://blog.csdn.net/rank/writing_rank" target="_blank">
                <dt><span class="count">13万+</span></dt>
                <dd class="font">周排名</dd>
            </a>
        </dl>
        <dl class="text-center" title="403715">
            <a href="https://blog.csdn.net/rank/writing_rank_total" data-report-click="{&quot;mod&quot;:&quot;1598321000_003&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4312&quot;}" target="_blank">
                <dt><span class="count">40万+</span></dt>
                <dd class="font">总排名</dd>
            </a>
        </dl>
        <dl class="text-center" style="min-width:58px" title="1004">  
            <dt><span class="count">1004</span></dt>
            <dd>访问</dd>
        </dl>
        <dl class="text-center" title="2级,点击查看等级说明">
            <dt><a href="https://blog.csdn.net/home/help.html#level" target="_blank">
                <img class="level" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/blog2.png">
            </a>
            </dt>
            <dd>等级</dd>
        </dl>
    </div>
    <div class="item-rank"></div>
    <div class="data-info d-flex item-tiling">
        <dl class="text-center" title="191">
            <dt><span class="count">191</span></dt>
            <dd>积分</dd>
        </dl>
         <dl class="text-center" id="fanBox" title="0">
            <dt><span class="count" id="fan">0</span></dt>
            <dd>粉丝</dd>
        </dl>
        <dl class="text-center" title="0">
            <dt><span class="count">0</span></dt>
            <dd>获赞</dd>
        </dl>
        <dl class="text-center" title="0">
            <dt><span class="count">0</span></dt>
            <dd>评论</dd>
        </dl>
        <dl class="text-center" title="1">
            <dt><span class="count">1</span></dt>
            <dd>收藏</dd>
        </dl>
    </div>
    <div class="aside-box-footer">
        <div class="badge-box d-flex">
            <div class="badge d-flex">
                <div class="icon-badge" title="持之以恒">
                    <div class="mouse-box">
                        <img class="medal-img" data-report-click="{&quot;spm&quot;:&quot;3001.4296&quot;}" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/chizhiyiheng@240.png" alt="持之以恒">
                    </div>
                </div>
                <div class="icon-badge" title="勤写标兵Lv2">
                    <div class="mouse-box">
                        <img class="medal-img" data-report-click="{&quot;spm&quot;:&quot;3001.4296&quot;}" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/qixiebiaobing2@240.png" alt="勤写标兵Lv2">
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="profile-intro-name-boxOpration">
        <div class="opt-letter-watch-box">
        <a class="bt-button personal-letter" href="https://me.csdn.net/noobzzz" target="_blank" rel="noopener">TA的主页</a>
        </div>
        <div class="opt-letter-watch-box">
        <a class="bt-button personal-letter" href="https://im.csdn.net/chat/noobzzz" target="_blank" rel="noopener">私信</a>
        </div>
        <div class="opt-letter-watch-box"> 
            <a class="personal-watch bt-button" id="btnAttent">关注</a>  
        </div>
    </div>
</div>
<div id="asideSearchArticle" class="aside-box">
	<div class="aside-content search-comter">
    <div class="aside-search aside-search-blog">         
        <input type="text" class="input-serch-blog" name="" autocomplete="off" value="" id="search-blog-words" placeholder="搜博主文章">
        <a class="btn-search-blog">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/csdn-sou.png">
        </a>
    </div>
    </div>
</div><div class="box-shadow mb8" data-pid="blog" style="height:250px;">
    <div class="aside-content text-center" id="cpro_u2734133">
        <div id="kp_box_56" data-pid="56"><iframe src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(7).html" frameborder="0" width="300px" height="250px" scrolling="no"></iframe><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?p=56&amp;a=3250&amp;c=6481&amp;k=&amp;spm=1001.2101.3001.5000&amp;d=1&amp;t=3&amp;u=4af473e56bb24043aa3cdb9e163da465" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/1.png"></div>
    </div>
</div>


<div id="asideCategory" class="aside-box " style="display:block!important;">
    <h3 class="aside-title">分类专栏</h3>
    <div class="aside-content">
        <ul>
            <li class="">
                <a class="clearfix" target="_blank" href="https://blog.csdn.net/noobzzz/category_10403818.html" data-report-click="{&quot;mod&quot;:&quot;popu_537&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4137&quot;,&quot;strategy&quot;:&quot;pc付费专栏左侧入口&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/category_10403818.html&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20201014180756738.png" alt="" onerror="this.src=&#39;https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64&#39;">
                    <span class="title oneline">
                        <span class="text">JUC</span>
                    </span>
                    <span class="count float-right">1篇</span>
                </a>
            </li>
            <li class="">
                <a class="clearfix" target="_blank" href="https://blog.csdn.net/noobzzz/category_10403819.html" data-report-click="{&quot;mod&quot;:&quot;popu_537&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4137&quot;,&quot;strategy&quot;:&quot;pc付费专栏左侧入口&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/category_10403819.html&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20201014180756724.png" alt="" onerror="this.src=&#39;https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64&#39;">
                    <span class="title oneline">
                        <span class="text">JAVA</span>
                    </span>
                    <span class="count float-right">1篇</span>
                </a>
            </li>
            <li class="">
                <a class="clearfix" target="_blank" href="https://blog.csdn.net/noobzzz/category_10309618.html" data-report-click="{&quot;mod&quot;:&quot;popu_537&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4137&quot;,&quot;strategy&quot;:&quot;pc付费专栏左侧入口&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/category_10309618.html&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20201014180756738.png" alt="" onerror="this.src=&#39;https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64&#39;">
                    <span class="title oneline">
                        <span class="text">linux</span>
                    </span>
                    <span class="count float-right">1篇</span>
                </a>
            </li>
            <li class="">
                <a class="clearfix" target="_blank" href="https://blog.csdn.net/noobzzz/category_9971429.html" data-report-click="{&quot;mod&quot;:&quot;popu_537&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4137&quot;,&quot;strategy&quot;:&quot;pc付费专栏左侧入口&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/category_9971429.html&quot;,&quot;ab&quot;:&quot;new&quot;}">
                    <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/20201014180756928.png" alt="" onerror="this.src=&#39;https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64&#39;">
                    <span class="title oneline">
                        <span class="text">LeetCode</span>
                    </span>
                    <span class="count float-right">17篇</span>
                </a>
            </li>
        </ul>
    </div>
</div>
<div id="asideArchive" class="aside-box">
    <h3 class="aside-title">最新文章</h3>
    <div class="aside-content">
        <ul class="inf_list clearfix">
            <li class="clearfix">
            <a href="https://blog.csdn.net/noobzzz/article/details/108076409" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_382&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4136&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/article/details/108076409&quot;,&quot;ab&quot;:&quot;new&quot;}">Linux 基础常用指令</a>
            </li>
            <li class="clearfix">
            <a href="https://blog.csdn.net/noobzzz/article/details/108028066" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_382&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4136&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/article/details/108028066&quot;,&quot;ab&quot;:&quot;new&quot;}">33. Search in Rotated Sorted Array</a>
            </li>
            <li class="clearfix">
            <a href="https://blog.csdn.net/noobzzz/article/details/107645775" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_382&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4136&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/noobzzz/article/details/107645775&quot;,&quot;ab&quot;:&quot;new&quot;}">31. Next Permutation</a>
            </li>
        </ul>
        <div class="archive-bar"></div>
        <div class="archive-box">
                <div class="archive-list-item"><a href="https://blog.csdn.net/noobzzz/article/month/2020/09" target="_blank" data-report-click="{&quot;mod&quot;:&quot;popu_538&quot;,&quot;spm&quot;:&quot;1001.2101.3001.4138&quot;,&quot;ab&quot;:&quot;new&quot;,&quot;dest&quot;:&quot;&quot;}"><span class="year">2020年</span><span class="num">19篇</span></a></div>
        </div>
    </div>
</div>
	<div id="footerRightAds" class="isShowFooterAds" style="height: auto !important;">
		<div class="aside-box" style="height: auto !important;">
			<div id="kp_box_57" data-pid="57" style="height: auto !important;"><script async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/f(7).txt"></script>
<!-- PC-博客详情页-左下视窗（300*600） -->
<ins class="adsbygoogle" style="display: block; height: 600px;" data-ad-client="ca-pub-1076724771190722" data-ad-slot="1173711872" data-ad-format="auto" data-full-width-responsive="true" data-adsbygoogle-status="done"><ins id="aswift_0_expand" style="display:inline-table;border:none;height:600px;margin:0;padding:0;position:relative;visibility:visible;width:300px;background-color:transparent;"><ins id="aswift_0_anchor" style="display: block; border: none; height: 600px; margin: 0px; padding: 0px; position: relative; visibility: visible; width: 300px; background-color: transparent; overflow: visible;"><iframe id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;border:0;width:300px;height:600px;" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" width="300" height="600" frameborder="0" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/ads.html" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!1" data-google-query-id="CL3quP2BkO0CFYyDlgod9_gKEw" data-load-complete="true"></iframe></ins></ins></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?p=57&amp;a=2488&amp;c=0&amp;k=&amp;spm=1001.2101.3001.5001&amp;d=1&amp;t=3&amp;u=0599664da8564d40a3a7b276df2ee90f" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/1(1).png"></div>
		</div>
	</div>
    <!-- 详情页显示目录 -->
<!--文章目录-->
<div id="asidedirectory" class="aside-box">
    <div class="groupfile" id="directory">
        <h3 class="aside-title">目录</h3>
        <div class="align-items-stretch group_item">
            <div class="pos-box">
            <div class="scroll-box">
                <div class="toc-box"><ol><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t0">文章目录</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t1">1. JUC 是什么</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t2">2. Lock 接口</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t3">3. Lambda表达式复习–详情请看 on java 8</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t4">4. 线程间通信</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t5">5. 线程间定制化调用通信</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t6">6.NotSafeDemo</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t7">7.多线程锁</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t8">8. Callable接口</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t9">9. JUC强大的辅助类讲解</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t10">10. ReentrantReadWriteLock读写锁</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t11">11.阻塞队列</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t12">13. 线程池</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t13">13. java8之流式计算 – 详情请看 on java 8</a></li><li class="active"><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t14">14.分支合并框架</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t15">15. 异步回调</a></li></ol></div>
            </div>
            </div>
        </div>
    </div>
</div>
</aside>
<script>
	$("a.flexible-btn").click(function(){
		$(this).parents('div.aside-box').removeClass('flexible-box');
		$(this).parents("p.text-center").remove();
	})
</script>
<script type="text/javascript" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/user-tooltip.js.下载"></script>
<script type="text/javascript" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/user-medal.js.下载"></script>    </div>
<div class="recommend-right  align-items-stretch clearfix" id="rightAside" data-type="recommend">
    <aside class="recommend-right_aside">
        <div id="recommend-right" style="position: fixed; top: 52px;">
                        <div class="flex-column aside-box groupfile" id="groupfile" style="display: block; max-height: 361px;">
                <div class="groupfile-div" style="max-height: 361px;">
                <h3 class="aside-title">目录</h3>
                <div class="align-items-stretch group_item">
                    <div class="pos-box">
                        <div class="scroll-box">
                            <div class="toc-box"><ol><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t0">文章目录</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t1">1. JUC 是什么</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t2">2. Lock 接口</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t3">3. Lambda表达式复习–详情请看 on java 8</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t4">4. 线程间通信</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t5">5. 线程间定制化调用通信</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t6">6.NotSafeDemo</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t7">7.多线程锁</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t8">8. Callable接口</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t9">9. JUC强大的辅助类讲解</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t10">10. ReentrantReadWriteLock读写锁</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t11">11.阻塞队列</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t12">13. 线程池</a></li><li class=""><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t13">13. java8之流式计算 – 详情请看 on java 8</a></li><li class="active"><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t14">14.分支合并框架</a></li><li><a href="https://blog.csdn.net/noobzzz/article/details/108686383#t15">15. 异步回调</a></li></ol></div>
                        </div>
                    </div>
                </div>
                </div>
            </div>
                <div id="recommendAdBox">
                    <div id="kp_box_479" data-pid="479"><script async="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/f(7).txt"></script>
<!-- PC-博客内页右侧第一顺位 -->
<ins class="adsbygoogle" style="display:inline-block;width:300px;height:600px" data-ad-client="ca-pub-1076724771190722" data-ad-slot="1827473444" data-adsbygoogle-status="done"><ins id="aswift_1_expand" style="display:inline-table;border:none;height:600px;margin:0;padding:0;position:relative;visibility:visible;width:300px;background-color:transparent;"><ins id="aswift_1_anchor" style="display:block;border:none;height:600px;margin:0;padding:0;position:relative;visibility:visible;width:300px;background-color:transparent;"><iframe id="aswift_1" name="aswift_1" style="left:0;position:absolute;top:0;border:0;width:300px;height:600px;" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" width="300" height="600" frameborder="0" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/ads(1).html" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!2" data-google-query-id="CMS2uf2BkO0CFUs_lgodd8YEfQ" data-load-complete="true"></iframe></ins></ins></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script><img class="pre-img-lasy" data-src="https://kunyu.csdn.net/1.png?p=479&amp;a=3266&amp;c=0&amp;k=&amp;spm=1001.2101.3001.4834&amp;d=1&amp;t=3&amp;u=b375259d68d44f8c92ad5e8276c5b756"></div>
                </div>
            <div class="recommend-list-box d-flex flex-column aside-box" id="recommend-list-box">
            <ul class="recommend-fixed-box align-items-stretch">
                <li class="right-item">
                    <a href="https://plugin.csdn.net/" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.461637.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;106_461637_RCMD&quot;,&quot;dest&quot;:&quot;https://plugin.csdn.net/&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.461637.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;1&quot;,&quot;strategy&quot;:&quot;106_461637_RCMD&quot;,&quot;dest&quot;:&quot;https://plugin.csdn.net/&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.461637.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.461637.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>CSDN开发助手，集成开发者常用工具，提升开发效率</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_38667207/13128930" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-2.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;2&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38667207/13128930&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-2.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;2&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38667207/13128930&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-2.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-2.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>元器件应用中的M系列M50143-006P集成电路实用检测数据</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/combo/detail/1939" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-3.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;3&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/combo/detail/1939&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-3.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;3&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/combo/detail/1939&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-3.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-3.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>C/C++编程全家桶</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31172" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-4.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;4&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31172&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-4.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;4&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31172&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-4.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-4.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Java零基础到架构师全套课程</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/seniorwizard/article/details/109839686" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-5.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;5&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/seniorwizard/article/details/109839686&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-5.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;5&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/seniorwizard/article/details/109839686&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-5.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-5.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>实战PyQt5: 058-字体选择对话框QFontDialog</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_38538224/13128932" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-6.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;6&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38538224/13128932&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-6.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;6&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38538224/13128932&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-6.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-6.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>在vue中封装方法以及多处引用该方法详解</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/u010711495/article/details/109839681" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-7.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;7&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/u010711495/article/details/109839681&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-7.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;7&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/u010711495/article/details/109839681&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-7.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-7.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>spark MapPartitionsRDD</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/weixin_41863544/article/details/109839630" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-8.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;8&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_41863544/article/details/109839630&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-8.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;8&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_41863544/article/details/109839630&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-8.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-8.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>缩放图片至固定大小，尺寸不足以0填充</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31254" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-9.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;9&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31254&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-9.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;9&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31254&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-9.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-9.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Scratch编程等级考试三级案例教学</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/iPwisdom/article/details/109839723" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-10.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;10&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/iPwisdom/article/details/109839723&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-10.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;10&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/iPwisdom/article/details/109839723&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-10.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-10.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>int 和 Integer 有什么区别</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31204" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-11.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;11&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31204&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-11.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;11&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31204&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-11.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-11.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>PC java逆向视频教程</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/Yesterday_Tomorrow/article/details/109839705" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-12.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;12&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/Yesterday_Tomorrow/article/details/109839705&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-12.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;12&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/Yesterday_Tomorrow/article/details/109839705&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-12.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-12.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>ECMAScript扩展 -11 【图片的预加载与懒加载】</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/qiqi_77software/13129024" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-13.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;13&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qiqi_77software/13129024&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-13.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;13&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qiqi_77software/13129024&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-13.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-13.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>LCD字体(ds digital系列)</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31278" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-14.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;14&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31278&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-14.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;14&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31278&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-14.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-14.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>第2章：快速扩充前端内容</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/z69183787/article/details/109839640" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-15.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;15&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/z69183787/article/details/109839640&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-15.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;15&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/z69183787/article/details/109839640&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-15.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-15.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Java中9种常见的CMS GC问题分析与解决</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31294" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-16.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;16&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31294&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-16.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;16&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31294&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-16.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-16.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>uni-app开发基础与项目实战</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31238" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-18.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;18&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31238&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-18.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;18&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31238&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-18.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-18.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Tomcat 安装搭建基础实战精讲（大神必经之路）</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/a945919556/article/details/109838754" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-19.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;19&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/a945919556/article/details/109838754&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-19.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;19&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/a945919556/article/details/109838754&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-19.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-19.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>阿里云服务器升级gcc</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/qq_36670483/article/details/109839533" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-20.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;20&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_36670483/article/details/109839533&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-20.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;20&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/qq_36670483/article/details/109839533&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-20.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-20.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Android代码混淆&amp;组件化混淆方案</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31257" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-21.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;21&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31257&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-21.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;21&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31257&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-21.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-21.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>async 异步编程</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31291" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-22.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;22&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31291&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-22.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;22&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31291&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-22.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-22.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>测试的课程1</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/qin552011373/13128929" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-23.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;23&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qin552011373/13128929&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-23.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;23&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qin552011373/13128929&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-23.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-23.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>pci金手指封装 PCI-Ex16封装 PCI封装</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_38550834/13128964" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-24.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;24&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38550834/13128964&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-24.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;24&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38550834/13128964&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-24.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-24.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>元器件应用中的TDA系列TDA9178集成电路实用检测数据</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_38718413/13128978" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-25.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;25&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38718413/13128978&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-25.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;25&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38718413/13128978&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-25.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-25.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>元器件应用中的TA系列TA7347集成电路实用检测数据</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/huang5333/article/details/109839440" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-26.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;26&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/huang5333/article/details/109839440&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-26.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;26&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/huang5333/article/details/109839440&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-26.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-26.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Python内置函数大全，快来看看！！</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31235" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-27.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;27&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31235&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-27.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;27&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31235&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-27.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-27.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>SVN 使用方式基础实战精讲（大神必经之路）</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/wenyusuran/13129015" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-28.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;28&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/wenyusuran/13129015&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-28.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;28&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/wenyusuran/13129015&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-28.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-28.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>腾讯2019广告算法大赛冠军源码全解析</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/weixin_43858276/article/details/109839598" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-29.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;29&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_43858276/article/details/109839598&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-29.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;29&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_43858276/article/details/109839598&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-29.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-29.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>node-sass和node版本不兼容问题</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_44345526/13129003" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-30.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;30&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_44345526/13129003&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-30.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;30&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_44345526/13129003&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-30.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-30.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>3com 3crpag175 pc卡驱动及无线网络管理软件（win98se可用）</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31276" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-31.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;31&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31276&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-31.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;31&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31276&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-31.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-31.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>第1章：数据持久化方案之MySQL数据库</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/wtdxhzx/13128995" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-32.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;32&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/wtdxhzx/13128995&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-32.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;32&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/wtdxhzx/13128995&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-32.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-32.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>RTW自动代码生成指导书</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/qq_42302487/13128980" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-33.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;33&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_42302487/13128980&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-33.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;33&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/qq_42302487/13128980&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-33.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-33.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>linux下mysql5.7.26的rpm安装文件.zip</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31194" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-34.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;34&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31194&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-34.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;34&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31194&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-34.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-34.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>新手入门 —— 开发控件</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_38529951/13128924" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-35.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;35&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38529951/13128924&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-35.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;35&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38529951/13128924&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-35.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-35.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>极简小清新年中工作计划汇报PPT模板</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/webmote/13129034" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-36.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;36&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/webmote/13129034&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-36.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;36&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/webmote/13129034&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-36.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-36.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>某项目的后台WebApi项目 for .net core 3.1 C#</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31242" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-37.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;37&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31242&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-37.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;37&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31242&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-37.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-37.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>Java 内核原理入门到实战（大神必经之路）</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://blog.csdn.net/weixin_45029438/article/details/109839543" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-38.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;38&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_45029438/article/details/109839543&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-blog-alirec-38.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;38&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_45029438/article/details/109839543&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-blog-alirec-38.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-blog-alirec-38.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>pointer-events属性</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://edu.csdn.net/course/detail/31234" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-39.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;39&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31234&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-39.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;39&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://edu.csdn.net/course/detail/31234&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-39.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-edu_course-alirec-39.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>MVC 设计模式基础实战精讲（JAVA大神必经之路）</h5>
                            </div>
                        </div>
                    </a>
                </li> 
                <li class="right-item">
                    <a href="https://download.csdn.net/download/weixin_38730977/13128944" target="_blank" data-report-view="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-40.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;40&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38730977/13128944&quot;}" data-report-click="{&quot;ab&quot;:&quot;new&quot;,&quot;mod&quot;:&quot;popu_858&quot;,&quot;extra&quot;:&quot;{\&quot;utm_medium\&quot;:\&quot;distribute.pc_blog_right_sidebar.none-task-download-alirec-40.nonecase\&quot;}&quot;,&quot;index&quot;:&quot;40&quot;,&quot;strategy&quot;:&quot;alirec&quot;,&quot;dest&quot;:&quot;https://download.csdn.net/download/weixin_38730977/13128944&quot;}" data-report-query="utm_medium=distribute.pc_blog_right_sidebar.none-task-download-alirec-40.nonecase&amp;depth_1-utm_source=distribute.pc_blog_right_sidebar.none-task-download-alirec-40.nonecase">
                        <div class="context-box ">
                            <div class="content clearfix ">
                                <h5>vue 接口请求地址前缀本地开发和线上开发设置方式</h5>
                            </div>
                            <span class="download_mark_button ">立即下载 </span>
                        </div>
                    </a>
                </li> 
            </ul>
            </div>
        </div>
    </aside>
</div>

</div>
<div class="mask-dark"></div>
<iframe class="bdSug_sd" style="display: none; position: absolute; border-width: 0px;" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(8).html"></iframe><div id="bdSug_1605837225009" class="bdSug_wpr" style="display: none;"></div><script type="text/javascript">
    var timert = setInterval(function(){
      sideToolbar = $(".csdn-side-toolbar");
      if (sideToolbar.length > 0) {
        sideToolbar.css('cssText','bottom:64px !important;')
        clearInterval(timert);
      }
    }, 200);
</script>
<script>
    var articleId = 108686383;
    var commentscount = 0;
    var curentUrl = "https://blog.csdn.net/noobzzz/article/details/108686383";
    var myUrl = "https://my.csdn.net/";
    var highlight = ["JUC","笔记","尚硅谷","周","阳","老师","思维","导","图","整理"];//高亮数组
    var share_card_url = "https://blog.csdn.net/noobzzz/article/shareArticleCardPage?article_id=108686383"
	var articleType = 1;
    var baiduKey = "JUC笔记之尚硅谷周阳老师思维导图整理";
    var needInsertBaidu = true;
    var recommendRegularDomainArr = ["blog.csdn.net/.+/article/details/","download.csdn.net/download/","edu.csdn.net/course/detail/","ask.csdn.net/questions/","bbs.csdn.net/topics/","www.csdn.net/gather_.+/"]
    var codeStyle = "atom-one-light";
    var baiduSearchType = "title";
    var canRead = true;
    var blogMoveHomeArticle = false;
    var showPcWindowAd = false;
</script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/sandalstrap.min.js.下载"></script>
<div class="skin-boxshadow"></div>
<div style="display:none;">
	<img src="https://blog.csdn.net/noobzzz/article/details/108686383" onerror="setTimeout(function(){if(!/(csdn.net|iteye.com|baiducontent.com|googleusercontent.com|360webcache.com|sogoucdn.com|bingj.com|baidu.com)$/.test(window.location.hostname)){window.location.href=&quot;\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x73\x64\x6e\x2e\x6e\x65\x74&quot;}},3000);">
</div>

<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/pc_wap_highlight-db1e81323a.min.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/pc_wap_common-906586e915.min.js.下载" type="text/javascript"></script>
<link rel="stylesheet" href="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/atom-one-light.css">
<script>
 // 全局声明
 if (window.csdn === undefined) {
      window.csdn = {};
    }
    window.csdn.sideToolbar = {
        options: {
            report:{
                isShow: true,
            },
            qr: {
                isShow: false,
            },
            guide: {
                isShow: true
            }
        }
    }
    $(function(){
        $(document).on('click',"a.option-box[data-type='report']",function() {
            window.csdn.userLogin.loadAjax(function(res){
                showReport(false,articleTitles);
            })
        });
    })
</script>
    <script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/baidu-search.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/qrcode.js.下载"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/common-b286f966c8.min.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/detail-e37a5dc16d.min.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/cart_jsonp.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/column-78261cfea6.min.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/side-toolbar.js.下载" type="text/javascript"></script>
<script src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/copyright.js.下载" type="text/javascript"></script>
<script>
    $(".MathJax").remove();
    if ($('div.markdown_views pre.prettyprint code.hljs').length > 0) {
        $('div.markdown_views')[0].className = 'markdown_views';
    }
</script>
<script type="text/javascript" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/MathJax.js.下载"></script>
<script type="text/x-mathjax-config;executed=true">
    MathJax.Hub.Config({
            "HTML-CSS": {
                    linebreaks: { automatic: true, width: "94%container" },
                    imageFont: null
            },
            tex2jax: {
                preview: "none"
            },
            mml2jax: {
                preview: 'none'
            }
    });
</script>
<script type="text/javascript" crossorigin="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/user-login.js.下载"></script>
<script type="text/javascript" crossorigin="" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/login-box.js.下载"></script>
<div id="pointDivs"><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div></div><div id="st_mask" onclick="closeMask()" style="width: 100%; height: 100%; background: rgba(0, 0, 0, 0.4); position: fixed; left: 0px; top: 0px; display: none; z-index: 1;"></div><div id="st_confirmBox" style="width: 100%; position: fixed; left: 0px; top: 34%; text-align: center; display: none; z-index: 2;"><div id="st_confirm" style="width: 80%; margin: 0px auto; background: rgb(255, 255, 255); border-radius: 3px; overflow: hidden; padding-top: 20px; text-align: center;"><span id="st_confirm_text" style="background: rgb(255, 255, 255); overflow: hidden; padding: 15px 8px 30px; text-align: center; display: block;"></span><span class="st_confirm_btn cancel" style="background: rgb(255, 255, 255); color: rgb(141, 141, 141); padding: 8px; text-align: center; display: block; width: 50%; margin: 0px auto; float: left; box-sizing: border-box; border-top: 1px solid rgb(207, 207, 207); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"></span><span class="st_confirm_btn success" style="background: rgb(27, 121, 248); color: rgb(255, 255, 255); padding: 8px; text-align: center; display: block; width: 50%; margin: 0px auto; float: left; box-sizing: border-box; border-top: 1px solid rgb(27, 121, 248); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"></span><div style="clear: both; display: block;"></div></div></div><div id="st_alertBox" style="width: 100%; position: fixed; left: 0px; top: 34%; text-align: center; display: none; z-index: 2;"><div id="st_alert" style="width: 80%; margin: 0px auto; background: rgb(255, 255, 255); border-radius: 2px; overflow: hidden; padding-top: 20px; text-align: center;"><span id="st_alert_text" style="background: rgb(255, 255, 255); overflow: hidden; padding: 15px 8px 30px; text-align: center; display: block;"></span><span id="st_alert_btn" onclick="closeMask()" style="background: rgb(27, 121, 248); color: rgb(255, 255, 255); padding: 8px; text-align: center; display: block; width: 72%; margin: 0px auto 20px; border-radius: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"></span></div></div><div id="st_toastBox" style="width: 100%; position: fixed; left: 0px; bottom: 10%; text-align: center; display: none;"><span id="st_toastContent" style="color: rgb(255, 255, 255); background: rgba(0, 0, 0, 0.8); padding: 8px 24px; border-radius: 4px; max-width: 80%; display: inline-block; font-size: 16px;"></span></div> <div class="report-box">  <div class="pos-boxer">      <div class="pos-content">          <div class="box-title">              <p>举报</p>              <svg class="icon btn-close" aria-hidden="true">                    <use xlink:href="#csdnc-times"></use>              </svg>          </div>          <div class="box-header">              <div class="box-top"><span>选择你想要举报的内容（必选）</span></div>              <div class="box-botoom">                  <ul>                      <li data="1" type="nei">内容涉黄</li>                      <li data="2" type="nei">政治相关</li>                      <li data="3" type="nei">内容抄袭</li>                      <li data="4" type="nei">涉嫌广告</li>                      <li data="5" type="nei">内容侵权</li>                      <li data="6" type="nei">侮辱谩骂</li>                      <li data="8" type="nei">样式问题</li>                      <li data="7" type="nei">其他</li>                  </ul>              </div>          </div>          <div>          <div class="box-content">          </div>          <div class="box-content">          </div>                    <div class="box-content" style="display:none;">                  <div class="box-content-top">                          <span>原文链接（必填）</span>                      </div>                      <div class="box-content-bottom" style="padding-bottom: 16px;">                        <div class="box-input" style="height: 32px;line-height: 32px;">                        <input class="content-input" type="text" id="originalurl" name="originalurl" placeholder="请输入被侵权原文链接">                        </div>                      </div>          </div>          <div class="box-content">          </div>          <div class="box-content" style="display:none;">                  <div class="box-content-top">                          <span>请选择具体原因（必选）</span>                      </div>                  <div class="box-content-bottom">                          <ul>                              <li sub_type="1">包含不实信息</li>                              <li sub_type="2">涉及个人隐私</li>                          </ul>                      </div>          </div>          <div class="box-content" style="display:none;">                  <div class="box-content-top">                          <span>请选择具体原因（必选）</span>                      </div>                  <div class="box-content-bottom">                          <ul>                              <li sub_type="1">侮辱谩骂</li>                              <li sub_type="2">诽谤</li>                          </ul>                  </div>          </div>          <div class="box-content" style="display:none;">                <div class="box-content-top">                        <span>请选择具体原因（必选）</span>                    </div>                <div class="box-content-bottom">                        <ul>                            <li sub_type="1">搬家样式</li>                            <li sub_type="2">博文样式</li>                        </ul>                </div>          </div>          <div class="box-content" style="display:none;">          </div>          </div>            <div id="cllcont" style="display:none;">            <div class="box-content-top">              <span class="box-content-span">补充说明（选填）</span>            </div>                <div class="box-content-bottom">                  <div class="box-input">                    <textarea class="ipt ipt-textarea" style="padding:0;" name="description" placeholder="请详细描述您的举报内容"></textarea>                  </div>                </div>            </div>            </div>      <div class="pos-footer">          <p class="btn-close">取消</p>          <p class="box-active">确定</p>      </div>  </div></div><div class="imgViewDom disnone" style="display: none;"><img src="https://blog.csdn.net/noobzzz/article/details/108686383"></div><style>.imgViewDom{display:none;position:fixed;top:0;left:0;height:100%;width:100%;z-index:99999999;background: rgba(255, 255, 255,0.8);overflow: auto;display:-webkit-box;-webkit-box-align:center;-webkit-box-pack:center;display:-moz-box;-moz-box-align:center;-moz-box-pack:center;display:-o-box;-o-box-align:center;-o-box-pack:center;display:-ms-box;-ms-box-align:center;-ms-box-pack:center; display:box;box-align:center;box-pack:center;}.imgViewDom img{cursor: zoom-out;}</style><div class="leftPop" style="right: -100%; background-color: rgb(235, 245, 253); top: 100px; border-left: 4px solid rgb(112, 184, 240);"><svg t="1536830466687" class="icon leftPop-close" viewBox="0 0 1024 1024" version="1.1"><title>不再显示</title><path d="M512 438.378667L806.506667 143.893333a52.032 52.032 0 1 1 73.6 73.621334L585.621333 512l294.485334 294.485333a52.074667 52.074667 0 0 1-73.6 73.642667L512 585.621333 217.514667 880.128a52.053333 52.053333 0 1 1-73.621334-73.642667L438.378667 512 143.893333 217.514667a52.053333 52.053333 0 1 1 73.621334-73.621334L512 438.378667z" fill="" p-id="15859"></path></svg><span>你的浏览器目前处于缩放状态，页面可能会出现错位现象，建议100%大小显示。</span></div><svg aria-hidden="true" style="position: absolute; width: 0px; height: 0px; overflow: hidden;"><symbol id="sousuo" viewBox="0 0 1024 1024"><path d="M719.6779726 653.55865555l0.71080936 0.70145709 191.77828505 191.77828506c18.25658185 18.25658185 18.25658185 47.86273439 0 66.12399318-18.26593493 18.26125798-47.87208744 18.26125798-66.13334544 0l-191.77828505-191.77828506c-0.2338193-0.2338193-0.4676378-0.4676378-0.69678097-0.71081014-58.13206223 44.25257003-130.69075187 70.51978897-209.38952657 70.51978894C253.06424184 790.19776156 98.14049639 635.27869225 98.14049639 444.17380511S253.06424184 98.14049639 444.16912898 98.14049639c191.10488633 0 346.02863258 154.92374545 346.02863259 346.02863259 0 78.6987747-26.27189505 151.25746514-70.51978897 209.38952657z m-275.50884362 43.11621045c139.45428506 0 252.50573702-113.05145197 252.50573702-252.50573702s-113.05145197-252.50573702-252.50573702-252.50573783-252.50573702 113.05145197-252.50573783 252.50573783 113.05145197 252.50573702 252.50573783 252.50573702z"></path></symbol><symbol id="gonggong_csdnlogo_" viewBox="0 0 4096 1024"><path d="M1234.16069807 690.46341551c62.96962316 23.02318413 194.30703694 45.91141406 300.51598128 45.91141406 114.44114969 0 178.13952547-31.68724287 183.2407937-80.86454822 4.642424-44.8587714-42.21366937-50.93170978-171.44579784-81.53931916-178.57137886-43.77913792-292.49970264-111.55313011-281.32549604-219.86735976 12.9825927-125.75031047 181.27046257-220.78504823 439.49180199-220.78504822 125.88526465 0 247.93783044 8.87998544 311.17736197 29.60894839l-21.7006331 158.57116851c-41.05306337-14.27815288-198.1937175-34.11641822-304.48363435-34.11641822-107.7744129 0-163.56447339 33.90049151-167.42416309 71.06687432-4.85835069 47.04502922 51.14763648 49.23128703 191.14910897 86.50563321 189.58364043 48.09767188 272.47250144 115.81768239 261.6221849 220.81203906-12.71268432 123.51007099-164.13128096 228.53141851-466.48263918 228.53141851-125.85827383 0-234.33444849-22.96920244-294.09216204-45.93840492l19.730302-157.86940672zM3010.8325562 172.75216735c688.40130256-129.79893606 747.80813523 103.42888812 726.53935551 309.80082928l-40.08139323 381.78539207h-218.51781789l36.57258439-348.20879061c7.90831529-76.68096846 57.13960232-226.66905073-180.54170997-221.05495659-82.26807176 1.99732195-123.05122675 13.2794919-123.05122677 13.27949188s-7.15257186 92.65954408-15.81663059 161.13529804l-41.43093509 394.84895728h-214.3072473l42.53755943-389.15389062 28.09746151-302.43233073z m-869.48282929-18.05687008c49.12332368-5.34418577 124.58970448-10.76934404 228.45044598-10.76934405 173.38913812 0 313.57954648 30.17575597 400.38207891 93.63121421 77.94953781 59.16391512 129.82592689 154.95439631 115.4668015 293.74128117-13.25250106 129.15115596-80.405704 219.57046055-178.16651631 275.4954752-89.44763445 52.74009587-202.16137055 75.27744492-371.66382812 75.27744493-99.94707012 0-195.27870708-5.39816743-267.77609576-16.14052064L2141.37671774 154.69529727z m143.26736381 569.85754561c16.70732823 3.23890047 38.67786969 6.45081009 81.99816339 6.45081009 173.44311979 0 295.7386031-85.23706385 308.01943403-205.07638097 17.84094339-173.2271931-90.63523129-233.79463176-273.39018992-232.74198912-23.67096422 0-56.57279475 0-73.98188473 3.1849188l-42.6725136 428.15565036z" fill="#262626"></path><path d="M1109.8678928 870.30336371c-41.10704503 14.25116203-126.26313639 23.96786342-245.23874671 23.96786342-342.13585224 0-526.8071603-160.59548129-504.97157302-372.90540663C385.78470347 268.40769434 659.36382925 126.08500985 958.9081404 126.08500985c116.00661824 0 184.32042718 9.33882968 248.31570215 24.99351522l-20.5400271 170.42014604c-42.56455024-14.33213455-142.32268451-27.50366309-223.07926938-27.50366311-176.25016686 0-325.94134993 52.49717834-343.10752238 218.57179958-15.30380469 148.50358623 89.7715245 219.48948804 288.04621451 219.48948804 69.0155707 0 170.77102691-9.8786464 217.81605614-24.15679928l-16.49140154 162.40386737z" fill="#CA0C16"></path></symbol><symbol id="gonggong_csdnlogodanse_" viewBox="0 0 4096 1024"><path d="M1229.41995733 690.46341551c62.96962316 23.02318413 194.30703694 45.91141406 300.51598128 45.91141406 114.44114969 0 178.13952547-31.68724287 183.2407937-80.86454822 4.642424-44.8587714-42.21366937-50.93170978-171.44579784-81.53931916-178.57137886-43.77913792-292.49970264-111.55313011-281.32549604-219.86735976 12.9825927-125.75031047 181.27046257-220.78504823 439.49180199-220.78504822 125.88526465 0 247.93783044 8.87998544 311.17736197 29.60894839l-21.7006331 158.57116851c-41.05306337-14.27815288-198.1937175-34.11641822-304.48363435-34.11641822-107.7744129 0-163.56447339 33.90049151-167.42416309 71.06687432-4.85835069 47.04502922 51.14763648 49.23128703 191.14910897 86.50563321 189.58364043 48.09767188 272.47250144 115.81768239 261.6221849 220.81203906-12.71268432 123.51007099-164.13128096 228.53141851-466.48263918 228.53141851-125.85827383 0-234.33444849-22.96920244-294.09216204-45.93840492l19.730302-157.86940672zM3006.09181546 172.75216735c688.40130256-129.79893606 747.80813523 103.42888812 726.53935551 309.80082928l-40.08139323 381.78539207h-218.51781789l36.57258439-348.20879061c7.90831529-76.68096846 57.13960232-226.66905073-180.54170997-221.05495659-82.26807176 1.99732195-123.05122675 13.2794919-123.05122677 13.27949188s-7.15257186 92.65954408-15.81663059 161.13529804l-41.43093509 394.84895728h-214.3072473l42.53755943-389.15389062 28.09746151-302.43233073z m-869.48282929-18.05687008c49.12332368-5.34418577 124.58970448-10.76934404 228.45044598-10.76934405 173.38913812 0 313.57954648 30.17575597 400.38207891 93.63121421 77.94953781 59.16391512 129.82592689 154.95439631 115.4668015 293.74128117-13.25250106 129.15115596-80.405704 219.57046055-178.16651631 275.4954752-89.44763445 52.74009587-202.16137055 75.27744492-371.66382812 75.27744493-99.94707012 0-195.27870708-5.39816743-267.77609576-16.14052064L2136.635977 154.69529727z m143.26736381 569.85754561c16.70732823 3.23890047 38.67786969 6.45081009 81.99816339 6.45081009 173.44311979 0 295.7386031-85.23706385 308.01943403-205.07638097 17.84094339-173.2271931-90.63523129-233.79463176-273.39018992-232.74198912-23.67096422 0-56.57279475 0-73.98188473 3.1849188l-42.6725136 428.15565036z m-1174.74919792 145.75052083c-41.10704503 14.25116203-126.26313639 23.96786342-245.23874671 23.96786342-342.13585224 0-526.8071603-160.59548129-504.97157303-372.90540663C381.04396273 268.40769434 654.62308851 126.08500985 954.16739966 126.08500985c116.00661824 0 184.32042718 9.33882968 248.31570215 24.99351522l-20.5400271 170.42014604c-42.56455024-14.33213455-142.32268451-27.50366309-223.07926938-27.50366311-176.25016686 0-325.94134993 52.49717834-343.10752238 218.57179958-15.30380469 148.50358623 89.7715245 219.48948804 288.04621451 219.48948804 69.0155707 0 170.77102691-9.8786464 217.81605614-24.15679928l-16.49140154 162.40386737z"></path></symbol><symbol id="xieboke1" viewBox="0 0 1024 1024"><path d="M204.70021457 751.89799169h657.99199211a33.6932867 33.6932867 0 0 1 0 67.33536736H163.68452703a33.53966977 33.53966977 0 0 1-18.74125054-5.68382181c-18.63883902-9.4218307-18.17798882-29.44322156-15.20806401-39.17228615C199.0675982 570.27171976 309.41567149 409.58853908 435.38145354 290.12586836A243.22661203 243.22661203 0 0 1 536.97336934 234.20935065c138.10150976-33.79569759 228.3257813-29.95527721 318.60125827-28.52152054-17.15387692 20.48224105-36.20236071 41.6301547-57.29906892 62.93168529-3.1747472 3.22595323-164.67721739 19.91897936-187.97576692 47.05794871-23.29854894 27.13896932 129.60138005 7.37360691 125.19769798 11.11161576-21.6599699 18.33160576-44.90731339 36.4071831-69.94685287 53.8682939-4.50609297 3.1747472-149.52035944-0.35843931-174.61110436 27.85584737-25.19315641 28.16308124 101.89914903 18.12678338 96.0617103 21.40394206-67.43777825 37.63611797-125.96578207 64.62147036-212.70807253 93.8086635-57.65750823 19.4069231-121.8181284 133.13456658-146.5504346 179.06599187a435.75967738 435.75967738 0 0 0-23.04252112 49.10617311z" fill="#CA0C16"></path></symbol><symbol id="gitchat" viewBox="0 0 1024 1024"><path d="M892.08971773 729.08552746h-108.597062v-162.89559374H403.40293801v-108.59706198h488.68677972v271.49265572z m-651.58237345 54.298531V783.49265572h488.68678045v108.59706201H131.91028227V131.91028227h760.17943546v217.19412473h-108.597062V240.50734428H240.50734428v542.87671418z m542.98531145 0h108.597062v108.59706199h-108.597062v-108.59706199z" fill="#FF9100"></path></symbol><symbol id="toolbar-memberhead" viewBox="0 0 1303 1024"><path d="M1061.51168438 433.79527648A78.51879902 78.51879902 0 1 1 1129.35192643 472.74060007h-1.80593246l-48.05350474 403.97922198c-4.55409058 38.16013652-39.41643684 67.133573-80.79584389 67.13357302H319.35199503c-41.30088817 0-76.00619753-28.81639958-80.717325-66.97653526L189.01078861 472.74060007H187.12633728a78.51879902 78.51879902 0 1 1 67.76172401-38.86680556l193.31328323 119.81968805 158.13686148-336.06046024A78.5973179 78.5973179 0 0 1 658.23913228 80.14660493a78.51879902 78.51879902 0 0 1 51.58685077 137.721974l158.13686147 335.82490362 193.54883986-119.89820607z" fill="#FDD840"></path><path d="M1050.8331274 394.22180104a78.51879902 78.51879902 0 1 1 78.51879903 78.51879903h-1.80593246l-48.05350474 403.97922198c-4.55409058 38.16013652-39.41643684 67.133573-80.79584389 67.13357302H659.02432018C658.47468805 793.25433807 658.23913228 505.32590231 658.23913228 80.14660493a78.51879902 78.51879902 0 0 1 51.58685077 137.721974l158.13686147 335.82490362 193.54883986-119.89820607A78.51879902 78.51879902 0 0 1 1050.8331274 394.22180104z" fill="#FFBE00"></path></symbol><symbol id="toolbar-m-memberhead" viewBox="0 0 1303 1024"><path d="M1062.74839935 433.79527648A78.51879902 78.51879902 0 1 1 1130.58864141 472.74060007h-1.80593246l-48.05350474 403.97922198c-4.55409058 38.16013652-39.41643685 67.133573-80.79584389 67.13357302H320.58871c-41.30088817 0-76.00619753-28.81639958-80.71732499-66.97653526L190.24750358 472.74060007H188.36305226a78.51879902 78.51879902 0 1 1 67.761724-38.86680556l193.31328324 119.81968805 158.13686147-336.06046024A78.5973179 78.5973179 0 0 1 659.47584726 80.14660493a78.51879902 78.51879902 0 0 1 51.58685076 137.721974l158.13686148 335.82490362 193.54883985-119.89820607z" fill="#D6D6D6"></path><path d="M1052.06984238 394.22180104a78.51879902 78.51879902 0 1 1 78.51879903 78.51879903h-1.80593246l-48.05350474 403.97922198c-4.55409058 38.16013652-39.41643685 67.133573-80.79584389 67.13357302H660.26103515C659.71140302 793.25433807 659.47584726 505.32590231 659.47584726 80.14660493a78.51879902 78.51879902 0 0 1 51.58685076 137.721974l158.13686148 335.82490362 193.54883985-119.89820607A78.51879902 78.51879902 0 0 1 1052.06984238 394.22180104z" fill="#C1C1C1"></path></symbol><symbol id="csdnc-upload" viewBox="0 0 1024 1024"><path d="M216.37466416 723.16095396v84.46438188h591.25067168v-84.46438188c0-23.32483876 18.90735218-42.23219094 42.23219093-42.23219021s42.23219094 18.90735218 42.23219096 42.23219021v84.46438188c0 46.64967827-37.81470362 84.46438188-84.46438189 84.46438189H216.37466416c-46.64967827 0-84.46438188-37.81470362-84.46438189-84.4643819v-84.46438187c0-23.32483876 18.90735218-42.23219094 42.23219096-42.23219021s42.23219094 18.90735218 42.23219094 42.23219021zM469.76780906 275.55040991L246.55378774 499.53305726a42.30820888 42.30820888 0 0 1-59.99082735 0c-16.56346508-16.62259056-16.56346508-43.57095155 0-60.19354139L480.51167818 144.38144832A42.21952103 42.21952103 0 0 1 512 131.93984464a42.20262858 42.20262858 0 0 1 31.48409853 12.44160369l293.95294108 294.95806754c16.56346508 16.62259056 16.56346508 43.57095155 0 60.19354139a42.30820888 42.30820888 0 0 1-59.99082735 0L554.23219094 275.55040991V680.92876375c0 23.32483876-18.90735218 42.23219094-42.23219094 42.23219021s-42.23219094-18.90735218-42.23219094-42.23219021V275.55040991z"></path></symbol></svg><div>
  <div class="csdn-side-toolbar " style="bottom: 64px !important; left: 1430.6px;">
    
    <a class="option-box" data-type="guide">
      <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/guide.png" alt="" srcset="">
      <span class="show-txt">新手<br>引导</span>
    </a>
    
    
    
    
    <a class="option-box" data-type="cs">
      <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/kefu.png" alt="" srcset="">
      <span class="show-txt">客服</span>
    </a>
    
    
    
    <a class="option-box" data-type="report">
      <span class="show-txt" style="display:flex;opacity:100;">举报</span>
    </a>
    
    
    <a class="option-box" data-type="gotop">
      <img src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/fanhuidingbucopy.png" alt="" srcset="">
      <span class="show-txt">返回<br>顶部</span>
    </a>
    
  </div>
  </div><ins class="adsbygoogle adsbygoogle-noablate" data-adsbygoogle-status="done" style="display: none !important;"><ins id="aswift_2_expand" style="display:inline-table;border:none;height:0px;margin:0;padding:0;position:relative;visibility:visible;width:0px;background-color:transparent;"><ins id="aswift_2_anchor" style="display:block;border:none;height:0px;margin:0;padding:0;position:relative;visibility:visible;width:0px;background-color:transparent;"><iframe id="aswift_2" name="aswift_2" style="left:0;position:absolute;top:0;border:0;width:undefinedpx;height:undefinedpx;" sandbox="allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation" frameborder="0" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/ads(2).html" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" data-google-container-id="a!2" data-load-complete="true"></iframe></ins></ins></ins><iframe id="google_osd_static_frame_2884075532284" name="google_osd_static_frame" style="display: none; width: 0px; height: 0px;" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/saved_resource(9).html"></iframe><div class="login-mark" style="display: none;"></div><div id="passportbox" class="login-box" style="display: none;"><iframe width="410" height="427" name="passport_iframe" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/login.html" frameborder="0" scrolling="no"></iframe></div></body><iframe id="google_esf" name="google_esf" src="./JUC笔记之尚硅谷周阳老师思维导图整理_noobzzz的博客-CSDN博客_files/zrt_lookup.html" data-ad-client="ca-pub-1076724771190722" style="display: none;"></iframe></html>